首页 > 解决方案 > 将字符数据帧转换为具有 R 中二进制变量的“更清晰”的数据帧

问题描述

从 R 中的数据框开始,如下所示(df):

year_1 <- c('James','Mike','Jane', NA)
year_2 <- c('Evelyn', 'Jackson', 'James', 'Avery')
year_3 <- c('Harper', 'Avery', NA, NA)
df <- data.frame(year_1, year_2, year_3)

...我想把它转换成df1之类的东西(当然我的原始数据框中有数百个元素,所以我不能手动去)

names <- c('James','Mike','Jane','Evelyn', 'Jackson', 'Avery', 'Harper')
year_1 <- c('YES','YES','YES', 'NO', 'NO', 'NO', 'NO')
year_2 <- c('YES','NO','NO', 'YES', 'YES', 'YES', 'NO')
year_3 <- c('NO','NO','NO', 'NO', 'NO', 'YES', 'YES')
df_1 <- data.frame(year_1, year_2, year_3)
rownames(df_1) <- names

我试图:

  1. 将 df 的所有元素转换为具有唯一元素的字符串向量
  2. 使用步骤 1 的名称构造 df1 的结构)
  3. 尝试用循环填充 df1 (在这里我无法构建一个合适的循环来实现这一点)

任何想法?

谢谢!!

标签: rdataframeloopsforeachbinary

解决方案


使用stack+的基本 R 选项table

> as.data.frame(ifelse(table(stack(df)) == 1, "YES", "NO"))
        year_1 year_2 year_3
Avery       NO    YES    YES
Evelyn      NO    YES     NO
Harper      NO     NO    YES
Jackson     NO    YES     NO
James      YES    YES     NO
Jane       YES     NO     NO
Mike       YES     NO     NO

推荐阅读