如何解决用NA进行汇总和减去
有人可以帮忙吗?
我有一个数据集
x <- data.frame(A = c(NA,'1','0','0'),B = c('0',NA),C = c('1',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的答案很好,但以防万一,这是您也可以考虑的另一种分步方法。
首先,转置您的数据框(我们称为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.rm = TRUE
的存在,您需要NA
。值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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。