r - ifelse 行在 R 中相同

标签 r if-statement

<分区>

我有一个看起来像这样的数据框:

> df<-data.frame(A=c(NA,1,2,3,4),B=c(NA,5,NA,3,4),C=c(NA,NA,NA,NA,4))
> df
   A  B  C
1 NA NA NA
2  1  5 NA
3  2 NA NA
4  3  3 NA
5  4  4  4

我正在尝试根据 df 中的行值创建一个“D”列,如果行中的值不同(即第 2 行)或所有 NA(即第 1 行),则 D 获得 NA,并且如果该行中的值相同,不包括 NA(即第 3、4、5 行),则为该行中的值。这将产生一个向量和数据框,如下所示:

> df$D<-c(NA,NA,2,3,4)
> df
   A  B  C  D
1 NA NA NA NA
2  1  5 NA NA
3  2 NA NA  2
4  3  3 NA  3
5  4  4  4  4

提前感谢您的建议。

最佳答案

您可以使用apply() 对每一行进行计算,然后使用unique()!is.na()。使用 !is.na() 您可以选择非 NA 的值。使用 unique() 可以获得唯一值,然后使用 length() 获得唯一值的数量。如果数字为 1,则使用第一个非 NA 值,如果不是,则使用 NA。

df$D<-apply(df,1,function(x) 
  ifelse(length(unique(x[!is.na(x)]))==1,x[!is.na(x)][1],NA)) 

关于r - ifelse 行在 R 中相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762968/

相关文章:

r - 如何在r中的reshape包中使用cast

excel - 将 IF 条件应用于范围 Excel VBA

c - 为什么我的程序会给我多余的输出? C程序

java - 这个 if else 语句有问题吗?

r - R语言中的着色输出

r - R 中的 float 小于或等于

R - 分配给新方法 print.list() 的问题

r - 在 Shiny 的情况下,如何修复(锁定)传单 map View 缩放和居中?

mySQL IF 语句语法

Javascript 忽略 if 语句