【问题标题】:How to make an ifelse statement for each row in a table如何为表中的每一行创建一个 ifelse 语句
【发布时间】:2015-06-30 09:26:14
【问题描述】:

我正在尝试创建一个 ifelse 语句,为表中的每一行提供一个结果,其中包含基于某些列的未定义行。

它在 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"

由于代码应该用于具有不同行数的数据集,因此如果我可以制作不包含固定行数的代码,那将是更可取的。

有人对这个问题有什么建议吗?

谢谢

【问题讨论】:

  • 这是什么语言和系统?请给出示例输入、输出和预期输出。见this
  • 我已经编辑了帖子,希望对您有所帮助!
  • 考虑添加一个 [rstudio] 标签。

标签: r loops if-statement rstudio


【解决方案1】:

我想你的意思是你想得到结果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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2021-12-25
    相关资源
    最近更新 更多