Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 通过分组行转换数据帧_R_Dataframe - Fatal编程技术网

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.哦,好吧。我想我会去找你的一些答案来投票。