通过分离变量来操作数据集

时间:2017-03-28 20:22:44

标签: r dataframe

我有一个类似于下图所示图像的数据集。总计,它长达1000多个观测值。我想创建一个新的数据框,将单个变量分成3个变量。每个变量在每个观察中用“+”分隔,因此需要将其作为一个因子进行分离。

enter image description here

2 个答案:

答案 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"))