我需要在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?
中是否可行答案 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相同,但使用dplyr
和tidyr
:
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