我的数据如下所示:
A 栏 | B 栏 | C 栏 |
---|---|---|
1 | 2 3 | 不适用 |
4 | 5 | 6 |
7 | 8 | 9 |
10 | 11 12 |
我正在尝试在 R 中清理它。每一列必须包含一个数字。在第 1 行的情况下,数字 3 属于 C 列,但存储在 B 列中。同样,我有 B 列,即最后一行,其中 12 属于 C 列,但存储在 B 中。
我该如何在 R 中清理这个?
我是 R 新手,以前没有遇到过这样的问题。
它看起来导入不正确,但如果您没有能力修复它那里(首选),这里有一个修复该框架的技巧:
quux[] <- t(apply(quux, 1, \(z) setdiff(strsplit(paste(setdiff(z, c(NA, "")), collapse = " "), " ")[[1]], ""))) |>
as.data.frame() |>
lapply(type.convert, as.is = TRUE)
quux
# Column A Column B Column C
# 1 1 2 3
# 2 4 5 6
# 3 7 8 9
# 4 10 11 12
str(quux)
# 'data.frame': 4 obs. of 3 variables:
# $ Column A: int 1 4 7 10
# $ Column B: int 2 5 8 11
# $ Column C: int 3 6 9 12
数据
quux <- structure(list("Column A" = c(1L, 4L, 7L, 10L), "Column B" = c("2 3", "5", "8", "11 12"), "Column C" = c(NA, 6L, 9L, NA)), class = "data.frame", row.names = c(NA, -4L))