R:将所有条目按值连接到另一列中,并添加它们的计数

用户3051065

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

dogid  home  school  month1year2014trainingtype1  month2year2014trainingtype1
12345  a     a       340                          360
12345  b     a       10                           0
31323  g     c       500                          550
41213  a     b       200                          400
41213  g     c       500                          100
41213  c     b       400                          20

除了计数列更多(每12个月,2年和2种培训类型的组合)。当前,对于狗狗,家庭和学校的每种独特组合,都有单独的行,具有不同的计数。我想做的是合并每个Dogid的所有计数,并串联该Dogid的所有房屋和学校价值(无重复)。

因此,在上面的示例中,我希望我的表看起来像这样:

dogid  home  school  month1year2014trainingtype1  month2year2014trainingtype1
12345  a|b   a       350                          360
31323  g     c       500                          550
41213  a|g|c b|c     1100                         520

为了使每个Dogid都有一行,home列会列出针对该Dogid发生的每个房屋(但不重复,例如,没有b | c | b,而是具有b | c),与学校相同,然后具有dogid最初具有的所有行的每个计数列的组合计数。

我将如何处理?

阿克伦

我们可以dplyr用来获取汇总输出。我们按“dogid”,使用summarisepasteunique元素在“家”,“学校”分开,并做sum了与“月”开始的列名。

library(dplyr)
dogs %>% 
   group_by(dogid)%>%
   summarise(home = paste(unique(home), collapse='|'),
             school = paste(unique(school), collapse='|'),
             month1year2014trainingtype1 = sum(month1year2014trainingtype1),
             month2year2014trainingtype1 = sum(month2year2014trainingtype1))

给出输出

# dogid  home school month1year2014trainingtype1 month2year2014trainingtype1
#1 12345   a|b      a                         350                         360
#2 31323     g      c                         500                         550
#3 41213 a|g|c    b|c                        1100                         520

如果我们有多个列pasteunique元素,还另一套的列来获得sum,我们可以做到这一点summarise_each分开,然后cbind列使用bind_cols在这里,我matches用来选择从头到尾只有非数字字符串的列名。但是,这也可以通过检查子集来完成class

dogs1 <- dogs %>%
           group_by(dogid)%>%
           summarise_each(funs(paste(unique(.), collapse='|')),matches('^\\D+$'))


dogs2 <- dogs %>%
           group_by(dogid)%>%
           summarise_each(funs(sum = sum(., na.rm=TRUE)), starts_with('month' ))

bind_cols(dogs1, dogs2[-1])
#  dogid  home school month1year2014trainingtype1 month2year2014trainingtype1
#1 12345   a|b      a                         350                         360
#2 31323     g      c                         500                         550
#3 41213 a|g|c    b|c                        1100                         520

数据

dogs <- structure(list(dogid = c(12345L, 12345L, 31323L, 41213L, 41213L, 
41213L), home = c("a", "b", "g", "a", "g", "c"), school = c("a", 
"a", "c", "b", "c", "b"), month1year2014trainingtype1 = c(340L, 
10L, 500L, 200L, 500L, 400L), month2year2014trainingtype1 = c(360L, 
0L, 550L, 400L, 100L, 20L)), .Names = c("dogid", "home", "school", 
"month1year2014trainingtype1", "month2year2014trainingtype1"), 
class = "data.frame", row.names = c(NA, -6L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将列值连接到另一列pandas中的所有值的更快方法,对第一列中的所有值执行

来自分类Dev

有条件地将值从R中的一列粘贴到另一列

来自分类Dev

熊猫使用与另一列对应的唯一值的所有条目创建新列

来自分类Dev

将一列的值与另一列中的所有值进行比较

来自分类Dev

如何有条件地将一列填充到列表中另一列中的值?

来自分类Dev

将一个df的一列连接到另一个df的所有列

来自分类Dev

将所有多列连接到另一个表的同一列

来自分类Dev

在df中按R中不同长度组合的另一列进行分组时,获得在列中创建的所有组合的计数

来自分类Dev

按一列分组并有条件地计数另一列-MySQL

来自分类Dev

基于R中另一列的值进行计数

来自分类Dev

计数观察值出现连接到另一列的次数。达克斯

来自分类Dev

使用 dplyr 有条件地将列中的值替换为另一列中的值

来自分类Dev

通过使用函数根据行中的元素替换一列中的所有条目

来自分类Dev

当所有值都是日期时,将一列中的 NA 替换为另一列中的值

来自分类Dev

有条件地将一列替换为另一列(R)

来自分类Dev

在awk的一列中将ascii文件中的所有条目

来自分类Dev

在awk的一列中将ascii文件中的所有条目

来自分类Dev

PHP 按值搜索数组中的所有条目

来自分类Dev

将列条目与同一列中的所有其他条目进行比较

来自分类Dev

根据两个文件中第一列的匹配值将文件中的一列连接到另一个文件

来自分类Dev

如果另一列匹配,则添加一列的所有值

来自分类Dev

有条件地在R中用另一列(但不在同一行中)的值填充一列的值

来自分类Dev

如何将一列添加到基于另一列中的值向上计数的数据框中?

来自分类Dev

将熊猫数据框列中的单词按另一列分组以获得频率/计数

来自分类Dev

SQL筛选一列中的所有值,但不在另一列中

来自分类Dev

查找一列的最大值(按组),然后将值插入R中的另一数据帧

来自分类Dev

在R中,将一列的值与所有其他列进行比较

来自分类Dev

根据条件将一列中的条目替换为另一列中的条目

来自分类Dev

根据参考 [Excel] 将一列中的值添加到另一列

Related 相关文章

  1. 1

    将列值连接到另一列pandas中的所有值的更快方法,对第一列中的所有值执行

  2. 2

    有条件地将值从R中的一列粘贴到另一列

  3. 3

    熊猫使用与另一列对应的唯一值的所有条目创建新列

  4. 4

    将一列的值与另一列中的所有值进行比较

  5. 5

    如何有条件地将一列填充到列表中另一列中的值?

  6. 6

    将一个df的一列连接到另一个df的所有列

  7. 7

    将所有多列连接到另一个表的同一列

  8. 8

    在df中按R中不同长度组合的另一列进行分组时,获得在列中创建的所有组合的计数

  9. 9

    按一列分组并有条件地计数另一列-MySQL

  10. 10

    基于R中另一列的值进行计数

  11. 11

    计数观察值出现连接到另一列的次数。达克斯

  12. 12

    使用 dplyr 有条件地将列中的值替换为另一列中的值

  13. 13

    通过使用函数根据行中的元素替换一列中的所有条目

  14. 14

    当所有值都是日期时,将一列中的 NA 替换为另一列中的值

  15. 15

    有条件地将一列替换为另一列(R)

  16. 16

    在awk的一列中将ascii文件中的所有条目

  17. 17

    在awk的一列中将ascii文件中的所有条目

  18. 18

    PHP 按值搜索数组中的所有条目

  19. 19

    将列条目与同一列中的所有其他条目进行比较

  20. 20

    根据两个文件中第一列的匹配值将文件中的一列连接到另一个文件

  21. 21

    如果另一列匹配,则添加一列的所有值

  22. 22

    有条件地在R中用另一列(但不在同一行中)的值填充一列的值

  23. 23

    如何将一列添加到基于另一列中的值向上计数的数据框中?

  24. 24

    将熊猫数据框列中的单词按另一列分组以获得频率/计数

  25. 25

    SQL筛选一列中的所有值,但不在另一列中

  26. 26

    查找一列的最大值(按组),然后将值插入R中的另一数据帧

  27. 27

    在R中,将一列的值与所有其他列进行比较

  28. 28

    根据条件将一列中的条目替换为另一列中的条目

  29. 29

    根据参考 [Excel] 将一列中的值添加到另一列

热门标签

归档