R 列组中最小值的返回值
我有一组列,我需要一个新列R 列组中最小值的返回值,r,R,我有一组列,我需要一个新列min123,其中包含这些列的最小值123a_1到123a_5 dff <- structure(list(`MCI ID` = c("070405344", "230349820", "260386435","370390587", "380406805", "391169282", "440377986", "750391394","890373764", "910367024"), `123a_1` = stru
min123
,其中包含这些列的最小值123a_1
到123a_5
dff <- structure(list(`MCI ID` = c("070405344", "230349820", "260386435","370390587", "380406805", "391169282", "440377986", "750391394","890373764", "910367024"),
`123a_1` = structure(c(16672, 16372,16730, 16688, 16700, 16783, 16709, 17033, 16786, 16675), class = "Date"),
`123a_2` = structure(c(17029, 16422, 17088, 17036, 17057,17140, 17072, 17043, 17141, 17038), class = "Date"),
`123a_3` = structure(c(NA_real_,NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,NA_real_, NA_real_, NA_real_), class = "Date"),
`123a_4` = structure(c(NA_real_,NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,NA_real_, NA_real_, NA_real_), class = "Date"),
`123a_5` = structure(c(NA_real_,NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,NA_real_, NA_real_, NA_real_), class = "Date")),
.Names = c("MCI ID","123a_1", "123a_2", "123a_3", "123a_4", "123a_5"), row.names = c(NA,10L), class = "data.frame")
dff这就是函数pmin
的作用:
> str(dff)
'data.frame': 10 obs. of 6 variables:
$ MCI ID: chr "070405344" "230349820" "260386435" "370390587" ...
$ 123a_1: Date, format: "2015-08-25" "2014-10-29" "2015-10-22" ...
$ 123a_2: Date, format: "2016-08-16" "2014-12-18" "2016-10-14" ...
$ 123a_3: Date, format: NA NA NA ...
$ 123a_4: Date, format: NA NA NA ...
$ 123a_5: Date, format: NA NA NA ...
> dff$groupmin <- pmin(dff[[2]],dff[[3]],dff[[4]], dff[[5]], dff[[6]], na.rm=TRUE)
> head(dff)
MCI ID 123a_1 123a_2 123a_3 123a_4 123a_5 groupmin
1 070405344 2015-08-25 2016-08-16 <NA> <NA> <NA> 2015-08-25
2 230349820 2014-10-29 2014-12-18 <NA> <NA> <NA> 2014-10-29
3 260386435 2015-10-22 2016-10-14 <NA> <NA> <NA> 2015-10-22
4 370390587 2015-09-10 2016-08-23 <NA> <NA> <NA> 2015-09-10
5 380406805 2015-09-22 2016-09-13 <NA> <NA> <NA> 2015-09-22
6 391169282 2015-12-14 2016-12-05 <NA> <NA> <NA> 2015-12-14
str(dff)
“data.frame”:10个obs。共有6个变量:
$MCI ID:chr“070405344”“230349820”“260386435”“370390587”。。。
$123a_1:日期、格式:“2015-08-25”“2014-10-29”“2015-10-22”。。。
$123a_2:日期、格式:“2016-08-16”“2014-12-18”“2016-10-14”。。。
$123a_3:日期,格式:不适用。。。
$123a_4:日期,格式:不适用。。。
$123a_5:日期,格式:不适用。。。
>dff$groupmin头(dff)
MCI ID 123a_1 123a_2 123a_3 123a_4 123a_5组分钟
1 070405344 2015-08-25 2016-08-16 2015-08-25
2 230349820 2014-10-29 2014-12-18 2014-10-29
3 260386435 2015-10-22 2016-10-14 2015-10-22
4 370390587 2015-09-10 2016-08-23 2015-09-10
5 380406805 2015-09-22 2016-09-13 2015-09-22
6 391169282 2015-12-14 2016-12-05 2015-12-14
这就是函数pmin
的作用:
> str(dff)
'data.frame': 10 obs. of 6 variables:
$ MCI ID: chr "070405344" "230349820" "260386435" "370390587" ...
$ 123a_1: Date, format: "2015-08-25" "2014-10-29" "2015-10-22" ...
$ 123a_2: Date, format: "2016-08-16" "2014-12-18" "2016-10-14" ...
$ 123a_3: Date, format: NA NA NA ...
$ 123a_4: Date, format: NA NA NA ...
$ 123a_5: Date, format: NA NA NA ...
> dff$groupmin <- pmin(dff[[2]],dff[[3]],dff[[4]], dff[[5]], dff[[6]], na.rm=TRUE)
> head(dff)
MCI ID 123a_1 123a_2 123a_3 123a_4 123a_5 groupmin
1 070405344 2015-08-25 2016-08-16 <NA> <NA> <NA> 2015-08-25
2 230349820 2014-10-29 2014-12-18 <NA> <NA> <NA> 2014-10-29
3 260386435 2015-10-22 2016-10-14 <NA> <NA> <NA> 2015-10-22
4 370390587 2015-09-10 2016-08-23 <NA> <NA> <NA> 2015-09-10
5 380406805 2015-09-22 2016-09-13 <NA> <NA> <NA> 2015-09-22
6 391169282 2015-12-14 2016-12-05 <NA> <NA> <NA> 2015-12-14
str(dff)
“data.frame”:10个obs。共有6个变量:
$MCI ID:chr“070405344”“230349820”“260386435”“370390587”。。。
$123a_1:日期、格式:“2015-08-25”“2014-10-29”“2015-10-22”。。。
$123a_2:日期、格式:“2016-08-16”“2014-12-18”“2016-10-14”。。。
$123a_3:日期,格式:不适用。。。
$123a_4:日期,格式:不适用。。。
$123a_5:日期,格式:不适用。。。
>dff$groupmin头(dff)
MCI ID 123a_1 123a_2 123a_3 123a_4 123a_5组分钟
1 070405344 2015-08-25 2016-08-16 2015-08-25
2 230349820 2014-10-29 2014-12-18 2014-10-29
3 260386435 2015-10-22 2016-10-14 2015-10-22
4 370390587 2015-09-10 2016-08-23 2015-09-10
5 380406805 2015-09-22 2016-09-13 2015-09-22
6 391169282 2015-12-14 2016-12-05 2015-12-14
使用
do.call
和pmin
的基本R方法:
dff$min123 <- do.call(pmin, c(dff[-1], na.rm = TRUE))
或数据。表:
library(data.table)
setDT(dff)[, min123 := do.call(pmin, c(.SD, na.rm = TRUE)), .SDcols = -1]
使用do.call
和pmin
的基本R方法:
dff$min123 <- do.call(pmin, c(dff[-1], na.rm = TRUE))
或数据。表:
library(data.table)
setDT(dff)[, min123 := do.call(pmin, c(.SD, na.rm = TRUE)), .SDcols = -1]
哈…我只是在do.call
:)中搜索如何通过na.rm
)哈…我只是在do.call
:)中搜索如何通过na.rm
)这与dplyr
solution@Sotos对于一个正在为如此简单的问题而挣扎的人,我给出了一个简单的答案。通过管道使用非标准库和非标准语法所带来的额外复杂性似乎不利于证明另一个答案的合理性。这并不重要,因为Jaap有迄今为止最好的答案:标准R和简洁!(我投了赞成票)好的。如果你认为它有价值,那就毫无疑问。@Sotos是的,我认为教人们如何用标准R做事是有价值的。我的帖子在Jaap的帖子和“已经有答案”链接后都没有价值了。好的。没问题。这取决于你。我只是想澄清一下,这与dplyr的dplyr
solution@Sotos对于一个正在为如此简单的问题而挣扎的人,我给出了一个简单的答案。通过管道使用非标准库和非标准语法所带来的额外复杂性似乎不利于证明另一个答案的合理性。这并不重要,因为Jaap有迄今为止最好的答案:标准R和简洁!(我投了赞成票)好的。如果你认为它有价值,那就毫无疑问。@Sotos是的,我认为教人们如何用标准R做事是有价值的。我的帖子在Jaap的帖子和“已经有答案”链接后都没有价值了。好的。没问题。这取决于你。我只是想澄清一下,它工作得很好,其次,有没有办法返回下一个最小值?这很好,其次,有没有办法返回下一个最小值?