创建尺寸与原始尺寸不同的新数据框

时间:2020-02-26 09:50:03

标签: r dataframe

尝试获得所需的输出时遇到很多麻烦。因此,我有一个像下面这样的数据框,其中有两列带有数字列表和标识符。数字列表虽然存储为字符。基本上,对于列表中的每个数字,我只需要一行具有适当的标识符即可。我尝试使用apply,并且能够为每一行创建数字列表和标识符的等长列表,但是apply返回的是包含两个列表的列表列表,我不知道该如何轻松转换为数据框。任何帮助将不胜感激。

df = data.frame(type = "1", y = 'set(1,2,3,4)')
desired_df = data.frame(type = rep("1", len(list(1,2,3,4)), y = c(1,2,3,4))

2 个答案:

答案 0 :(得分:1)

如果共享数据,则可以使用ygsub列中删除不必要的字符,然后使用separate_rows来获取长格式的数据。

library(dplyr)

df %>%
  mutate(y = gsub('[set()]', '', y)) %>%
  tidyr::separate_rows(y, sep = ',', convert = TRUE)

#  type y
#1    1 1
#2    1 2
#3    1 3
#4    1 4

答案 1 :(得分:0)

将“ set(...)”重新格式化为列表或向量后,可能的处理方式:

1)直接来自矢量

data.frame(type = "1", y = 1:4)

2)从列表中创建数据框,然后再旋转一次

tidyr::pivot_longer( data.frame(type = "1", y = list(1, 2, 3, 4)),
                     cols = -type
)

3)然后添加一个长度(或nrow)变量