dataframe中的最小值大于R中的0
minimum value in dataframe greater than 0 in R
我在 R 中有一个包含约 2500 列的数据集,我试图从整个数据框中找到大于零的最小值。找到这个数字后,我想尝试将它添加到数据框中的所有其他数据。
这是一个示例数据集。
df <- as.data.frame(rbind(c(0.01,0.4,0.5,5,27,0.22,25,0,0,0.3),c(0.25,0,0,2.3,3.6,6,0,0.001,0.021,0),c(22,23,0,40,0.53,0.2,0.4,0.44,0,0),c(0.1,0,0.12,0.56,0.7,13,0,0,3,4)))
如您所见,此数据框中的最小值为 0.001
我试过以下方法:
min<- min(df=!0)
这给了我 1。
然后我想将这个数字 (0.001) 添加到数据框中的所有其他值。但是,我不知道该怎么做。
感谢您花时间考虑我的问题。任何帮助将不胜感激。
您的 df=!0
语法不正确。如果要指定df
不等于0,正确的做法是df!=0
。但是,如果您这样做,输出将是合乎逻辑的,因此 min(df != 0)
的结果将是 0
.
因此,您应该使用逻辑输出来索引您的原始 df
。
min(df[df != 0])
[1] 0.001
由于您的问题表明您希望 min
值大于零,因此使用 df > 0
更准确。
min(df[df > 0])
[1] 0.001
另一种方法是取消列出数据框,然后找到其非零元素的最小值:
nonzero <- which(df != 0)
min(unlist(df)[nonzero])
[1] 0.001
这是另一个使用 tidyverse
和 min
的选项。我们可以使用 map
将任何零值转换为 NA
,然后将数据转换为向量,然后拉取最小值,不包括 NA
.
library(tidyverse)
map(df, na_if, 0) %>%
flatten_dbl() %>%
min(na.rm = T)
# [1] 0.001
我在 R 中有一个包含约 2500 列的数据集,我试图从整个数据框中找到大于零的最小值。找到这个数字后,我想尝试将它添加到数据框中的所有其他数据。
这是一个示例数据集。
df <- as.data.frame(rbind(c(0.01,0.4,0.5,5,27,0.22,25,0,0,0.3),c(0.25,0,0,2.3,3.6,6,0,0.001,0.021,0),c(22,23,0,40,0.53,0.2,0.4,0.44,0,0),c(0.1,0,0.12,0.56,0.7,13,0,0,3,4)))
如您所见,此数据框中的最小值为 0.001
我试过以下方法:
min<- min(df=!0)
这给了我 1。
然后我想将这个数字 (0.001) 添加到数据框中的所有其他值。但是,我不知道该怎么做。
感谢您花时间考虑我的问题。任何帮助将不胜感激。
您的 df=!0
语法不正确。如果要指定df
不等于0,正确的做法是df!=0
。但是,如果您这样做,输出将是合乎逻辑的,因此 min(df != 0)
的结果将是 0
.
因此,您应该使用逻辑输出来索引您的原始 df
。
min(df[df != 0])
[1] 0.001
由于您的问题表明您希望 min
值大于零,因此使用 df > 0
更准确。
min(df[df > 0])
[1] 0.001
另一种方法是取消列出数据框,然后找到其非零元素的最小值:
nonzero <- which(df != 0)
min(unlist(df)[nonzero])
[1] 0.001
这是另一个使用 tidyverse
和 min
的选项。我们可以使用 map
将任何零值转换为 NA
,然后将数据转换为向量,然后拉取最小值,不包括 NA
.
library(tidyverse)
map(df, na_if, 0) %>%
flatten_dbl() %>%
min(na.rm = T)
# [1] 0.001