我有一个类似于下图所示图像的数据集。总计,它长达1000多个观测值。我想创建一个新的数据框,将单个变量分成3个变量。每个变量在每个观察中用“+”分隔,因此需要将其作为一个因子进行分离。
答案 0 :(得分:2)
以下是使用data.table
的解决方案:
library(data.table)
# Data frame
df <- data.frame(MovieId.Title.Genres = c("yyyy+xxxx+wwww", "zzzz+aaaa+aaaa"))
# Data frame to data table.
df <- data.table(df)
# Split column into parts.
df[, c("MovieId", "Title", "Genres") := tstrsplit(MovieId.Title.Genres, "\\+")]
# Print data table
df
答案 1 :(得分:1)
我假设您的movieData
对象是单列data.frame对象。
如果要从数据集中拆分单个元素,请使用strsplit
字符+
(R希望将其视为"\\+"
):
# split the first element of movieData into a vector of strings:
strsplit(as.character(movieData[1,1]), "\\+")
使用lapply
将其应用于整个列,然后将结果列表按到一个漂亮,可用的data.frame:
# convert to a list of vectors:
step1 = lapply(movieData[,1], function(x) strsplit(as.character(x), "\\+"))
# step1 is a list, so make it into a data.frame:
step2 = as.data.frame(step1)
# step2 is a nice data.frame, but its names are garbage. Fix it:
movieDataWithColumns = setNames(step2, c("MovieId", "Title", "Genres"))