【问题标题】:r, cbind two columns, values in specifi orderr, cbind 两列,按特定顺序取值
【发布时间】:2020-10-10 10:23:59
【问题描述】:

我有 2 个列表,一个带有性别 c('m', 'f', 'f', 'm', 'f'),另一个带有名称 c('Peter', 'Peter', 'Anna', 'Anna', 'Peter')。 我想将join / merge 的两列添加到一个数据框中,其中性别值适合名称(Peter 和 m,Anna 和 f)。

如何在 R 中做到这一点?

感谢大家的帮助!

【问题讨论】:

  • R 应该如何知道 Peter 是男性而 Anna 是女性?如果没有任何信息将名称与性别匹配,您必须手动执行此操作,即将名称放入 df 并使用例如添加新列df$gender <- ifelse(df$name %in% c("Peter"), "m", "f") 之类的东西,或者使用一个查找表来给出每个名字的性别。

标签: r cbind


【解决方案1】:

假设你有以下两个列表:

gender = list(c('m', 'f', 'f', 'm', 'f'))
names = list(c('Peter', 'Peter', 'Anna', 'Anna', 'Peter'))
 

一种选择是使用unlist 并将它们组合成data.frame

data.frame(names = unlist(names),
           gender = unlist(gender)
           )

#   names gender
# 1 Peter     m
# 2 Peter     f
# 3 Anna      f
# 4 Anna      m
# 5 Peter     f
        

【讨论】:

    【解决方案2】:

    unnest 的另一个选项

    library(dplyr)
    library(tidyr)
    tibble(gender, names) %>%
        unnest(c(gender, names))
    

    数据

    gender <- list(c('m', 'f', 'f', 'm', 'f'))
    names <- list(c('Peter', 'Peter', 'Anna', 'Anna', 'Peter'))
    

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2018-07-18
      相关资源
      最近更新 更多