R 通过分组行转换数据帧
R 通过分组行转换数据帧,r,dataframe,R,Dataframe,d1您可以按性别拆分,然后合并到字符串中,最后合并: spl = split(d1, d1$Gender) spl = lapply(spl, function(x) data.frame(Gender=x$Gender[1], Age=paste(x$Age, collapse=", "))) result = do.call(rbind, spl) 您可以按性别拆分,然后合并到字符串中,最后合并: spl =
d1您可以按性别拆分,然后合并到字符串中,最后合并:
spl = split(d1, d1$Gender)
spl = lapply(spl, function(x) data.frame(Gender=x$Gender[1],
Age=paste(x$Age, collapse=", ")))
result = do.call(rbind, spl)
您可以按性别拆分,然后合并到字符串中,最后合并:
spl = split(d1, d1$Gender)
spl = lapply(spl, function(x) data.frame(Gender=x$Gender[1],
Age=paste(x$Age, collapse=", ")))
result = do.call(rbind, spl)
如果您只是想显示它,我建议不要“转换”,您可以这样做:
with(d1, aggregate(Age, list(Gender=Gender), list) )
Gender x
1 F 26, 24, 20, 26
2 M 15, 38, 17, 35
我注意到@Henrik删除了他使用aggregate.formula
的答案,可能是因为我的答案很不幸,因为我将删除我的答案,以支持他的答案。这是他写的,我觉得比我的好:
aggregate(Age ~ Gender, data = d1, function(x) paste(x, collapse = ", "))
但请注意,此答案和先前接受的答案都将这些年龄变量作为因子返回。如果您只想显示此答案,我建议不要“转换”,您可以这样做:
with(d1, aggregate(Age, list(Gender=Gender), list) )
Gender x
1 F 26, 24, 20, 26
2 M 15, 38, 17, 35
我注意到@Henrik删除了他使用aggregate.formula
的答案,可能是因为我的答案很不幸,因为我将删除我的答案,以支持他的答案。这是他写的,我觉得比我的好:
aggregate(Age ~ Gender, data = d1, function(x) paste(x, collapse = ", "))
但请注意,此答案和先前接受的答案都将这些年龄变量作为因子返回。我将添加必要的plyr
解决方案:
library("plyr")
ddply(d1, .(Gender), summarize, Age = paste(Age, collapse = ", "))
## Gender Age
## 1 F 26, 24, 20, 26
## 2 M 15, 38, 17, 35
我将添加必要的基于plyr
的解决方案:
library("plyr")
ddply(d1, .(Gender), summarize, Age = paste(Age, collapse = ", "))
## Gender Age
## 1 F 26, 24, 20, 26
## 2 M 15, 38, 17, 35
你应该停下来重新考虑这一努力。使数据帧“看起来”像一个特定的输出显示可能会使事情变得复杂。首先,您应该定义为什么要以这种方式显示数据。您应该停下来重新考虑这项工作。使数据帧“看起来”像一个特定的输出显示可能会使事情变得复杂。你应该做的第一件事是定义你为什么要这样显示数据,这是事实。我删除了我的答案,而代之以你的。我认为您的列表
解决方案是一个不错的选择—保留原始的年龄值,并且仍然获得所要求的格式+1.哦,好吧。我想我会找出一些你的答案来提高投票率。这是真的。我删除了我的答案,而代之以你的。我认为您的列表
解决方案是一个不错的选择—保留原始的年龄值,并且仍然获得所要求的格式+1.哦,好吧。我想我会去找你的一些答案来投票。