我有一个看起来像这样的数据集:
C1 C2
A,B,C 1
A 2
D,A 3
我想将其转换为:
C1 C2
A 1
B 1
C 1
A 2
D 3
A 3
我目前不知道如何进行搜索,甚至不知道要搜索什么。我一直在尝试使用data.table
来表述某些内容,但无法实现任何对远程有用的功能。请告知如何实现此目标。
致Mods:如果可以找到类似的问题,请与类似的问题合并。我找不到任何东西,但强烈怀疑这是一个相当普遍的问题。
答案 0 :(得分:1)
x <- read.table(header=TRUE, stringsAsFactors=FALSE, text="
C1 C2
A,B,C 1
A 2
D,A 3")
C1s <- strsplit(x$C1, ",")
C1s
# [[1]]
# [1] "A" "B" "C"
# [[2]]
# [1] "A"
# [[3]]
# [1] "D" "A"
data.frame(C1=unlist(C1s), C2=rep(x$C2, times=lengths(C1s)), stringsAsFactors=FALSE)
# C1 C2
# 1 A 1
# 2 B 1
# 3 C 1
# 4 A 2
# 5 D 3
# 6 A 3
答案 1 :(得分:1)
您可以这样做:
df = data.frame(C1 = c("A,B,C", "A", "D,A"), C2=c(1,2,3))
library(stringr)
df2 <- data.frame(C1 = unlist(strsplit(as.character(df$C1), ",")),
C2 = rep(df$C2, str_count(df$C1, ',')+1))