在r中的表中组合不同的行的值

时间:2015-09-09 18:39:38

标签: r format reformat reformatting

我需要在R中重新格式化表格。

我有一张这样的桌子。

List

我想将其改为

curl -I -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36" http://b17db03a092ebf708b42-9afd7fe2d9c9c6937aeab44904ac3403.r3.cf5.rackcdn.com/artist/samplesong/13111c20aee51aeb480ecbd988cd8cc9.mp3

这在R?

中是否可行

2 个答案:

答案 0 :(得分:2)

这是一种非常直接的“长到宽”类型的重塑问题,但您需要一个辅助“id”(或“时间”)变量。

您可以尝试使用我的“splitstackshape”软件包中的getanID并使用dcast从长到宽重新整形。 getanID将创建一个名为“.id”的新列,该列将用作“时间”变量:

library(splitstackshape)
dcast.data.table(getanID(mydf, "ID"), ID ~ .id, value.var = "category")
#    ID 1  2
# 1:  1 a  b
# 2:  2 c NA
# 3:  3 d NA
# 4:  4 a  c
# 5:  5 a NA

答案 1 :(得分:1)

与Ananda相同,但使用dplyrtidyr

library(tidyr)
library(dplyr)
mydf %>% group_by(ID) %>%
    mutate(cat_row = paste0("category", 1:n())) %>%
    spread(key = cat_row, value = category)

# Source: local data frame [5 x 3]
# 
#   ID category1  category2
# 1  1         a          b
# 2  2         c         NA
# 3  3         d         NA
# 4  4         a          c
# 5  5         a         NA