我想转换这个data.frame
Loc Time(h)
Paris, Luxembourg 10,15
Paris, Lyon, Berlin 9,12,11
到这个
Loc Time(h)
Paris 10
Luxembourg 15
Paris 9
Lyon 12
Berlin 11
答案 0 :(得分:4)
如果安装了data.table
,您可以使用Ananda Mahto cSplit
function。
如果dat
是您的数据,
devtools::source_gist(11380733)
cSplit(dat, c("Loc", "Time"), direction = "long")
# Loc Time
# 1: Paris 10
# 2: Luxembourg 15
# 3: Paris 9
# 4: Lyon 12
# 5: Berlin 11
答案 1 :(得分:1)
假设数据框中的每个条目都是您在上面提到的表单中的字符串,您可以执行以下操作
#notice the space in ", " for the first line
newLoc<-sapply(df$Loc, function(entry) {unlist(strsplit(entry,", ", fixed=TRUE))})
#and the lack there of in the second
newTime<-sapply(df$`Time(h)`, function(entry) {unlist(strsplit(entry, ",", fixed=TRUE))})
我认为我们还需要压缩结果
dim(newLoc)<-NULL
dim(newTime)<-NULL
然后组合成一个df
data.frame(cbind(Loc=newLoc, `Time(h)`=newTime))