【发布时间】:2020-08-26 19:44:07
【问题描述】:
我的数据有很多列和主题,但为了更简单地说明,假设我有 7 个主题,有 3 个变量/列,称为 x1、x2 和 x3(值范围从 1 到 3 和 NAs)。在我想要的分析中,重要的是我实际上调用了我想要使用的列(因为我不能只在分析中使用整个数据框,因为那里有更多变量/列)
>data <- data.frame(‘id’=c(1,2,3,4,5,6,7), ‘x1’=c(1,2,2,NA,3,3,1), ‘x2’=c(NA,3,1,NA,2,3,2), ‘x3’=c(NA,2,NA,NA,3,NA,1)
id x1 x2 x3
1 1 NA NA
2 2 3 2
3 2 1 NA
4 NA NA NA
5 3 2 NA
6 3 3 NA
7 1 2 1
x1 x2 和 x3 的类是数字的。 除此之外,我想创建一个名为“x4”的变量/列: - 给了我最少的行数 x1、x2 和 x3。
-如果在 x1,x2,x3 的行中存在 NA,则应忽略 NA。
-但是,如果他们都是 NA,我希望结果是 NA。 (不是 Inf,这就是它现在对我的代码所做的)
-如果有两个相同的最小数字,则只显示这两个中的任何一个。像这样:
>data <- data.frame(‘id’=c(1,2,3,4,5,6,7), ‘x1’=c(1,2,2,NA,3,3,1), ‘x2’=c(NA,3,1,NA,2,3,2), ‘x3’=c(NA,2,NA,NA,3,NA,1), ‘x4’=c(1,2,1,NA,2,3,1)
id x1 x2 x3 x4
1 1 NA NA 1
2 2 3 2 2
3 2 1 NA 1
4 NA NA NA NA
5 3 2 NA 2
6 3 3 NA 3
7 1 2 1 1
我设法找到了一个非常相似的问题,而且我基本上可以让它工作:min for each row with dataframe in R
data$x4
我现在遇到的问题是,对于所有 NA(所以 id 编号为 4),我的结果不是 NA,而是“Inf”。
问题 1:我怎样才能使它成为 NA 而不是 Inf?之后我当然可以这样做:
is.na(data$x4)
但我想知道是否有一种很好的方法可以在之前的代码中/在之前的代码中做到这一点?
另外,除了使用 sapply 和内部 FUNction min 之外,我还想尝试以如下方式使其与代码一起使用:问题 2: 正在使用以下其他代码?
data$x4
因为这个 x4 每次都会得到结果“1”。我猜它只是显示了整列的最低数字(1)?我不明白为什么。我已经在使用 ',1' 但没有帮助。
我希望有人可以帮助我(r 和 stackoverflow 新手),谢谢!
【问题讨论】: