如何使用Summary从多个列中获取数据(仅对其中一列进行计算)?
我有新生儿出生第一年的体重测量数据:如何使用Summary从多个列中获取数据(仅对其中一列进行计算)?,r,R,我有新生儿出生第一年的体重测量数据: Children <- data.frame(ID = c(1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4), age_days = c(0,12,25,33,38,2,25,38,45,18,38,40,60,1,5,10,20), weight = c(3.4,3.5,4.5,5.1,5.3,2.8,4.5,5.3,5.6,3.6,5.4,5.5,6.8,3.1,3.0,3.3,4.1)) 我尝试过使用summary函数,但
Children <- data.frame(ID = c(1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
age_days = c(0,12,25,33,38,2,25,38,45,18,38,40,60,1,5,10,20),
weight = c(3.4,3.5,4.5,5.1,5.3,2.8,4.5,5.3,5.6,3.6,5.4,5.5,6.8,3.1,3.0,3.3,4.1))
我尝试过使用summary函数,但似乎找不到一种使用它获取权重的方法
Children%>%group\u by(ID)%>%summary(dis\u 2weeks=min(dis\u 2weeks),dis\u 1month=min(dis\u 1month))
谢谢你的帮助 也许有一个更优雅的解决方案,但这是可行的
库(tidyverse)
儿童%
嵌套()%>%
变异(新数据=映射(数据,最佳权重))%>%
选择(-data)%%>%
unnest(“新数据”)
#>#A tibble:4 x 5
#>#组:ID[4]
#>ID显示周体重显示周体重显示1个月体重显示1个月
#>
#> 1 1 2 3.5 3 5.1
#> 2 2 11 4.5 5 4.5
#> 3 3 4 3.6 8 5.4
#> 4 4 4 3.3 10 4.1
由(v0.3.0)于2020-01-14创建的
dplyr::summary
将为您提供变量的摘要统计信息,因此询问min(dis_2weeks)
将告诉您dis_2weeks的最小值是多少,但不会告诉您哪个观测值有它
有几种简单的方法可以做到这一点。最简单的方法可能是dplyr::arrange()
数据,然后使用dplyr::summary()
选择第一项:
library(dplyr)
Children <- data.frame(ID = c(1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
age_days = c(0,12,25,33,38,2,25,38,45,18,38,40,60,1,5,10,20),
weight = c(3.4,3.5,4.5,5.1,5.3,2.8,4.5,5.3,5.6,3.6,5.4,5.5,6.8,3.1,3.0,3.3,4.1))
just_minimum <- Children %>%
group_by(ID) %>%
mutate(dis_2weeks = abs(14-age_days), dis_1month = abs(30-age_days)) %>%
arrange(dis_2weeks) %>%
summarize_all(first)
just_minimum
#一个tible:4 x 5
#组别:ID[4]
ID年龄天体重周数月数
1 1 12 3.5 2 18
2 2 25 4.5 11 5
3 3 18 3.6 4 12
4 4 10 3.3 4 20
你也可以在<代码> PMDPLYR 包中考虑<代码>突变子集< /代码> .< /P>附加注释:如果你使用Fielter()版本,请确保使用它的变量不具有精度/舍入问题,使得Min()与任何实际值都不匹配-您可以通过确保所有ID都是just_min版本来检查这一点。此外,mutate_子集建议用于确定真正的目标是否是采用这些ID特定的权重,并用它们填充原始数据的所有ID行。
ID dis_2weeks weight_2weeks dis_1month weight_1month
1 1 2 3.5 3 5.1
2 2 11 4.5 5 4.5
3 3 4 3.6 8 5.4
4 4 4 3.3 10 4.1
library(dplyr)
Children <- data.frame(ID = c(1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
age_days = c(0,12,25,33,38,2,25,38,45,18,38,40,60,1,5,10,20),
weight = c(3.4,3.5,4.5,5.1,5.3,2.8,4.5,5.3,5.6,3.6,5.4,5.5,6.8,3.1,3.0,3.3,4.1))
just_minimum <- Children %>%
group_by(ID) %>%
mutate(dis_2weeks = abs(14-age_days), dis_1month = abs(30-age_days)) %>%
arrange(dis_2weeks) %>%
summarize_all(first)
just_minimum
# A tibble: 4 x 5
ID age_days weight dis_2weeks dis_1month
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 12 3.5 2 18
2 2 25 4.5 11 5
3 3 18 3.6 4 12
4 4 10 3.3 4 20
just_min2 <- Children %>%
group_by(ID) %>%
mutate(dis_2weeks = abs(14-age_days), dis_1month = abs(30-age_days)) %>%
filter(dis_2weeks == min(dis_2weeks))
just_min2
# A tibble: 4 x 5
# Groups: ID [4]
ID age_days weight dis_2weeks dis_1month
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 12 3.5 2 18
2 2 25 4.5 11 5
3 3 18 3.6 4 12
4 4 10 3.3 4 20