如何为 table 中的每一行创建 ifelse 语句
How to make an ifelse statement for each row in a table
我正在尝试制作一个 ifelse 语句,为 table 中的每一行提供一个结果,其中包含基于某些列的未定义行。
在R工作室
我有一个看起来像这样的矩阵
Resp Acdev weight EQR S1 S2 S3 refcon status
1 2 3 4 5 6 7 NA 9
0 11 12 13 14 15 16 1 18
1 20 21 22 23 24 25 2 21
0 29 30 31 32 33 34 1 NA
数据叫做Phyto。
如果一行中的所有数字都不同于 "NA",我希望得到结果“0”;如果一行中的 1 个值是 "NA",我希望得到结果“1”。
当我尝试使用代码时
l=ifelse((Phyto[,8]!="" && Phyto[,2]!="" && Phyto[,9]!="" && Phyto[,3]!="" && Phyto[,1]!=""),0,1)
I get the result "1", but would like to get the result "1", "0", "1", "0"
由于代码应该用于具有不同行数的数据集,因此如果我可以编写不包含固定行数的代码会更好。
有人对这个问题有什么建议吗?
谢谢
我想你的意思是你想要得到结果1, 0, 0, 1
应该这样做
l <- ifelse(is.na(rowSums(Phyto)),1,0)
一些测试数据
Phyto <- rbind(c(2, 3, 5), c(4, NA, 11), c(5, 5, 5), c(7, 1, NA))
l <- ifelse(is.na(rowSums(Phyto)),1,0)
产量
> Phyto
[,1] [,2] [,3]
[1,] 2 3 5
[2,] 4 NA 11
[3,] 5 5 5
[4,] 7 1 NA
> l
[1] 0 1 0 1
我正在尝试制作一个 ifelse 语句,为 table 中的每一行提供一个结果,其中包含基于某些列的未定义行。
在R工作室
我有一个看起来像这样的矩阵
Resp Acdev weight EQR S1 S2 S3 refcon status
1 2 3 4 5 6 7 NA 9
0 11 12 13 14 15 16 1 18
1 20 21 22 23 24 25 2 21
0 29 30 31 32 33 34 1 NA
数据叫做Phyto。
如果一行中的所有数字都不同于 "NA",我希望得到结果“0”;如果一行中的 1 个值是 "NA",我希望得到结果“1”。
当我尝试使用代码时
l=ifelse((Phyto[,8]!="" && Phyto[,2]!="" && Phyto[,9]!="" && Phyto[,3]!="" && Phyto[,1]!=""),0,1)
I get the result "1", but would like to get the result "1", "0", "1", "0"
由于代码应该用于具有不同行数的数据集,因此如果我可以编写不包含固定行数的代码会更好。
有人对这个问题有什么建议吗?
谢谢
我想你的意思是你想要得到结果1, 0, 0, 1
应该这样做
l <- ifelse(is.na(rowSums(Phyto)),1,0)
一些测试数据
Phyto <- rbind(c(2, 3, 5), c(4, NA, 11), c(5, 5, 5), c(7, 1, NA))
l <- ifelse(is.na(rowSums(Phyto)),1,0)
产量
> Phyto
[,1] [,2] [,3]
[1,] 2 3 5
[2,] 4 NA 11
[3,] 5 5 5
[4,] 7 1 NA
> l
[1] 0 1 0 1