R-数据帧查找和is.na处理
我在R中有以下两个数据帧R-数据帧查找和is.na处理,r,R,我在R中有以下两个数据帧 d1 <- data.frame(var1 = c(1,NA), var2 = c(NA, 2), var3 = c(3,3)) max <- data.frame(var1 = 10, var2 = 5, var3 = 5) > d1 var1 var2 var3 1 1 NA 3 2 NA 2 3 > max var1 var2 var3 1 10 5 5 我将从一个for
d1 <- data.frame(var1 = c(1,NA), var2 = c(NA, 2), var3 = c(3,3))
max <- data.frame(var1 = 10, var2 = 5, var3 = 5)
> d1
var1 var2 var3
1 1 NA 3
2 NA 2 3
> max
var1 var2 var3
1 10 5 5
我将从一个for循环开始,遍历d1中的所有行,并创建“max_sum”列
for(第1行:nrow(d1)){
d1[行,“最大和”]max\u sum您可以使用矩阵乘法
cbind(d1,
"max_sum" = (!is.na(d1)) %*% t(max))
# var1 var2 var3 max_sum
#1 1 NA 3 15
#2 NA 2 3 10
如何从1,NA,3
和10,5,5
到15
?它只是10+0+5
?@r2evans谢谢。只是在没有+
的情况下尝试了一下,这里实际上不需要它。“virtual-1”用于在名为…sum
:-)的变量中分配sum
的返回值…(为什么不直接执行max\sum.)[i] @r2evans你说得对。但它解决了问题:)。不过,我喜欢这个网站,因为总是有人提供更快更准确的解决方案。它也会让我受益;)
for (row in 1:nrow(d1)) {
d1[row, "max_sum"] <- #code
}
max_sum <- vector()
for(i in 1:nrow(d1)) {
sum <- sum(max[c(!is.na(d1[i,]))])
max_sum[i] <- sum
}
d1$max_sum <- max_sum
d1
var1 var2 var3 max_sum
1 1 NA 3 15
2 NA 2 3 10
cbind(d1,
"max_sum" = (!is.na(d1)) %*% t(max))
# var1 var2 var3 max_sum
#1 1 NA 3 15
#2 NA 2 3 10