我有一个数据集,我正在尝试将多行数据串在一起:
被列为Allendale / Irvington / S的社区。希尔顿 比奇菲尔德/十山/西山 等
它们与数据列相关联。
我想带那些街区,使用拆分功能来获取
Allendale
Irvington
S. Hilton
Beechfield
Ten Hills
但我也希望将数据复制下来,以便Allendale Irvington和S. Hilton的列数据相同!
然后我将其按字母顺序排序。
我是一个新手并且谷歌大部分我做的事情,所以如果你也可以解释你正在做什么,这将有很大帮助!
答案 0 :(得分:3)
您可以使用splitstackshape包的cSplit
功能执行此操作:
# create some dummy data
df <- data.frame(n=c(12,15),area=c("Allendale/Irvington/S. Hilton","Beechfield/Ten Hills/West Hills"))
# split & convert to long format
library(splitstackshape)
df.new <- cSplit(df, sep="/", "area", "long", type.convert=TRUE)
结果:
> df.new n area 1: 12 Allendale 2: 12 Irvington 3: 12 S. Hilton 4: 15 Beechfield 5: 15 Ten Hills 6: 15 West Hills
另一种方法是使用data.table包中的tstrsplit
函数:
library(data.table)
dt.new <- setDT(df)[, lapply(.SD, function(x) unlist(tstrsplit(x, "/", fixed=TRUE))), by=n]
这给出了:
> dt.new n area 1: 12 Allendale 2: 12 Irvington 3: 12 S. Hilton 4: 15 Beechfield 5: 15 Ten Hills 6: 15 West Hills
您也可以使用:
dt.new <- setDT(df)[, strsplit(area,"/",fixed=TRUE), by=n]
但不保留变量名称(即area
)。