R语言同时输出几列数据的和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言同时输出几列数据的和相关的知识,希望对你有一定的参考价值。

参考技术A 两列
有时数据需要比向量更复杂的存储方式。幸运的是,R软件提供了很多的数据结构。常见的有数据框(data.frame)、矩阵(matrix)、列表(list)以及数组(array)。数据框类似于电子表格,矩阵类似于人们熟悉的矩阵数学计算,列表对于程序员比较熟悉。

有没有办法根据索引折叠几列,同时保留其他列?

【中文标题】有没有办法根据索引折叠几列,同时保留其他列?【英文标题】:Is there a way to collapse a few columns based on an index, while retaining the other columns? 【发布时间】:2021-10-11 19:07:11 【问题描述】:

我有一个看起来像这样的数据框:

ID Var1 Var2 Var3
1 row1 abc 321
1 row2 bcd 456
2 row4 def 555
2 row5 tss 889

我想要做的是根据 ID 在 Var1 中用逗号连接所有字符串,但保留所有其他列。所以最后一个应该是这样的:

ID Var1 Var2 Var3
1 row1, row2 abc 321
1 row1, row2 bcd 456
2 row4, row5 def 555
2 row4, row5 tss 889

我尝试过聚合,但如果我这样做,Var2 和 Var3 会被丢弃。我有几列我想像使用 Var 1 一样加入它们的行,有没有办法做到这一点?

感谢您的帮助!

【问题讨论】:

您的问题解决了吗? 【参考方案1】:

使用groupby()+transform():

如果顺序很重要:

df['Var1']=df.groupby('ID')['Var1'].transform(lambda x:','.join(pd.unique(x)))

如果顺序无关紧要:

df['Var1']=df.groupby('ID')['Var1'].transform(lambda x:','.join(set(x)))

df的输出:

    ID  Var1        Var2    Var3
0   1   row1,row2   abc     321
1   1   row1,row2   bcd     456
2   2   row4,row5   def     555
3   2   row4,row5   tss     889

【讨论】:

您好,抱歉,您如何确保仅加入唯一值?所以如果 row1 出现不止一次,那么它不会变成 "row1, row2, row1" 而是 "row1, row2" @JayneHow 更新了答案...请看一下 :)

以上是关于R语言同时输出几列数据的和的主要内容,如果未能解决你的问题,请参考以下文章

在r语言中怎样在数据框中添加新列

R语言数据集

R语言数据框添加行或列数据2021.5.28

r语言如何输出数据集过长,导致输出截断,怎么解决这个问题

R语言中怎样将数据框中的一列分成多列

r语言 多元回归后怎样提取方程的p_value