【问题标题】:bind dataframes by group of names in R通过 R 中的名称组绑定数据帧
【发布时间】:2018-06-15 04:58:34
【问题描述】:

我有一张桌子(df):

Class    Subclass
A          C
A          D
B          E
B          F

以及分离的data.frames中“C”“D”“E”“F”的计算结果

C (a data.frame,1 column)

D (a data.frame,1 column)

E (a data.frame,1 column)
F (a data.frame,1 column)

并且我想将data.frames“C”“D”绑定到“A”和“E”“F”到B,对于组A(C,D)和B(E,F)的总和)。我需要做一个循环,因为类的数量有 70 个和子类 20000 个变量,并且手动进行这个太难了。我有一个名称为“A”的列表和子类“C”“D”的名称试图绑定到 data.frame 但脚本不起作用

谢谢。

【问题讨论】:

  • 只需进行拆分即可将数据集拆分为 list 的数据集 lst <- split(df1['Subclass'], df1$Class)
  • 我不需要拆分,我进行拆分来计算 C、D...我需要类似 unsplit 的东西,将 C、D 的结果分组到 A...我按照你说的做了,但是没有用。感谢您的关注
  • 好吧,那就不清楚了。
  • 是的,这有助于制作列表,我会尝试循环播放。谢谢。
  • 通过这个列表,我怎样才能创建一个循环,以便通过类的名称将 data.frames 与我在 data.frame 中的子类结果绑定? for (d in names (lst)) { total

标签: r data-binding


【解决方案1】:

(如果我理解正确的话),如果你把你的类作为一个向量,你可以使用tapply,如下例所示,它将数字 1:100 的子集相加并将它们分配给从 A 到 Z 的类:

z <- tapply(1:100, base::sample(LETTERS, 100, replace = T), FUN = sum)

【讨论】:

  • 变量不是字母,是化合物...我有带有每个字母结果的data.frames,在环境中,我想将你说的字母绑定到班级。谢谢。
  • 对不起,我想我没有说清楚,我的意思是如果创建数据框 C、D、E、F 等的计算不是太复杂,那么可以使用 @ 987654324@ 带有一个(匿名)函数,可以进行这些计算并将它们聚合到更高的(类)级别,从而避免创建单个子类数据帧的需要
  • 对于每个具有太多循环(内部循环)的化合物,计算大约为 300 行。所以,我需要全局环境中的组,C,D,E,F,并获取这些结果,并用每个类的结果制作一个data.frame。例如,按 df 中的类名称对结果进行分组(见上)。因此,我将子类的结果按类分组,然后我可以进行最后的计算,即每个类的总和。非常感谢您的帮助!!!非常感谢
  • 在此链接stackoverflow.com/questions/14954399/… 上讨论了如何将许多数据帧放入列表中。如果您管理它(假设您创建了所有 C、D、E 等的列表并将其命名为 ldf),并且数据框具有相同的结构(列数和列名),那么您可以 rbind do.call(rbind, ldf) 将它们放入单个数据框中。这可能会让你更接近......
  • 嗨 Valeri!我有 df(带有类和子类)、子类列表和一个按子类的 data.frame(我也有一个 data.frame,其中包含所有结果子类“CDEF” (每个结果只是一列)),但我想要的是找到一些命令,对 R 说; “Ey!你看到全局环境中的名称了吗?所以让我(按类)与每个子类的结果(我在全局环境和 .csv 中),如果你想采取关系df (要知道每个类的 data.frame 中的子类)。我的英语太糟糕了,对不起。感谢您的关注和耐心
猜你喜欢
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 2021-12-28
  • 1970-01-01
相关资源
最近更新 更多