用 NA 求和减
Summarize and subtract with NA
有人可以帮忙吗?
我有一个数据集
x <- data.frame(A = c(NA, '1', '0', '0'),
B = c('0', '0', '0', NA),
C = c('1', NA, NA, NA))
我需要生成这样的东西(生成两个变量 x5 和 x6):
_ x1 x2 x3 x4 x5 x6
A NA 1 0 0 1 2
B 0 0 0 NA 0 3
C 1 NA NA NA 1 0
谢谢
也许你可以试试下面的代码
setNames(
cbind(
data.frame(t(x)),
t(sapply(x, function(v) table(factor(na.omit(v), levels = c(1, 0)))))
),
paste0("x", 1:6)
)
这给出了
x1 x2 x3 x4 x5 x6
A <NA> 1 0 0 1 2
B 0 0 0 <NA> 0 3
C 1 <NA> <NA> <NA> 1 0
我注意到您仍在处理此问题的评论。 @ThomasIsCoding 的回答很好,但以防万一,这里有一个替代方法,您也可以考虑 step-by-step 方法。
首先,转置您的数据框(我们称之为 df
):
df <- as.data.frame(t(x))
df
V1 V2 V3 V4
A <NA> 1 0 0
B 0 0 0 <NA>
C 1 <NA> <NA> <NA>
现在,对于另外 2 列,使用 rowSums
求和“1”和“0”的值。鉴于数据中存在 NA
,您需要 na.rm = TRUE
。值 1:4
表示前四列。
df$V5 <- rowSums(df[,1:4] == "1", na.rm = T)
df$V6 <- rowSums(df[,1:4] == "0", na.rm = T)
df
输出
V1 V2 V3 V4 V5 V6
A <NA> 1 0 0 1 2
B 0 0 0 <NA> 0 3
C 1 <NA> <NA> <NA> 1 0
有人可以帮忙吗?
我有一个数据集
x <- data.frame(A = c(NA, '1', '0', '0'),
B = c('0', '0', '0', NA),
C = c('1', NA, NA, NA))
我需要生成这样的东西(生成两个变量 x5 和 x6):
_ x1 x2 x3 x4 x5 x6
A NA 1 0 0 1 2
B 0 0 0 NA 0 3
C 1 NA NA NA 1 0
谢谢
也许你可以试试下面的代码
setNames(
cbind(
data.frame(t(x)),
t(sapply(x, function(v) table(factor(na.omit(v), levels = c(1, 0)))))
),
paste0("x", 1:6)
)
这给出了
x1 x2 x3 x4 x5 x6
A <NA> 1 0 0 1 2
B 0 0 0 <NA> 0 3
C 1 <NA> <NA> <NA> 1 0
我注意到您仍在处理此问题的评论。 @ThomasIsCoding 的回答很好,但以防万一,这里有一个替代方法,您也可以考虑 step-by-step 方法。
首先,转置您的数据框(我们称之为 df
):
df <- as.data.frame(t(x))
df
V1 V2 V3 V4
A <NA> 1 0 0
B 0 0 0 <NA>
C 1 <NA> <NA> <NA>
现在,对于另外 2 列,使用 rowSums
求和“1”和“0”的值。鉴于数据中存在 NA
,您需要 na.rm = TRUE
。值 1:4
表示前四列。
df$V5 <- rowSums(df[,1:4] == "1", na.rm = T)
df$V6 <- rowSums(df[,1:4] == "0", na.rm = T)
df
输出
V1 V2 V3 V4 V5 V6
A <NA> 1 0 0 1 2
B 0 0 0 <NA> 0 3
C 1 <NA> <NA> <NA> 1 0