R如何为列中的每个唯一字符创建一列并填充匹配值

时间:2018-12-03 06:28:47

标签: r

我有一个这样的数据框:

Dataframe

我希望它像这样:

What I want

我该怎么做?每一列的列长都不同,所以我认为它不能是数据框,也不能是列表列表?

对不起,我不够聪明,无法将代码放在这里:(

预先感谢

自然

2 个答案:

答案 0 :(得分:1)

类似的事情可以完成工作:

RegEx

这将返回如下列表:

# data
example_df <- data.frame(col1 = c('A', 'A', 'A', 'B','B','B'),
                         col2 = 1:6)


# split into list of data.frames by value of col1
# and apply a function to get unique values of col2
lapply(
  split(example_df, example_df$col1), 
  function(x) unique(x$col2)
  )

答案 1 :(得分:1)

您还可以执行以下操作:

library(data.table)

df_new <- dcast(setDT(df), Column2 ~ Column1)[, lapply(.SD, na.omit)][!duplicated(A, B)][, Column2 := NULL]

这将为您提供一个数据框:

    A  B
1: 12  6
2: 23  8
3: 30 45