如何按行中的行名分隔数据?

时间:2016-04-12 16:48:51

标签: r text-files

对不起,如果这是一个愚蠢但我找不到答案。我有一个men.txt文件,其中包含年轻人和老年人的数据,如:

"BalanceMeasure" "Age_group"
26.272722832203 "elderly"
23.4572384621414 "elderly"
28.0295727143824 "elderly"
26.6261784908838 "elderly"
14.5754428676468 "young"
18.5711350938964 "young"
6.03642481885425 "young"
15.2875928698119 "young"
16.8511145817837 "young"
17.4018884973852 "young"

这只显示我必须使用的实际txt文件的一小部分我只是想表明我的意思。我需要根据“年轻”和“老年人”来分离数据并找出平均值。 我试过这个:

> data1 <- subset(balancedata_0, Age_group == "young")
> data2 <- subset(balancedata_0, Age_group == "elderly")

但这只给了我一份“年轻”和“老人”的字样。那么我如何在一个数据集中获得与“年轻”男性相关的所有数字,以及在另一个数据集中与“老年”男性相关的数字。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用split()

age_list <- lapply(split(balancedata_0,balancedata_0$Age_group), `[[`, 1)
#$elderly
#[1] 26.27272 23.45724 28.02957 26.62618

#$young
#[1] 14.575443 18.571135  6.036425 15.287593 16.851115 17.401888

并用

提取平均值
lapply(age_list,mean)
#$elderly
#[1] 26.09643
#
#$young
#[1] 14.78727

数据

balancedata_0 <- structure(list(BalanceMeasure = c(26.272722832203, 23.4572384621414, 
 28.0295727143824, 26.6261784908838, 14.5754428676468, 18.5711350938964, 
 6.03642481885425, 15.2875928698119, 16.8511145817837, 17.4018884973852), 
 Age_group = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,  2L), 
 .Label = c("elderly", "young"), class = "factor")), 
 .Names = c("BalanceMeasure", "Age_group"), class = "data.frame", 
 row.names = c(NA, -10L))