首页 > 解决方案 > 在 R 和 dplyr 中将列变量展平为是/否

问题描述

我在数据框中有一个包含各种人的简历的数据集。每行是一个新人条目,并且有多个列(学校、职位、出生城市等)。我想为这些人建立一个邻接矩阵,所以我正在寻找一种将列变量“扁平化”为是/否的方法。

例如,数据框的片段如下所示:

Name:     City_of_birth:  Job Title: 
Person1   'New York',     'Librarian'
Person2   'Shanghai',     'Secretary'
Person3   'Tokyo',        'Engineer'
Person4   'Lagos',        'CEO'
Person5   'Atlanta'       'Mayor'

我想转换数据框,以便有新的列标题“纽约”、“上海”、“东京”......以及与每一行(人)关联的是/否值。

Name:     New York?:  Shanghai?:  ...    Librarian?:
Person1   Yes         No                 Yes
Person2   No          No                 No
Person3   No          No                 No
Person4   ...
Person5   

我对 R 很陌生,所以我愿意使用任何工具来做到这一点。提前非常感谢!

标签: rdataframedplyradjacency-matrix

解决方案


在基础 R 中,您可以执行以下操作:

a<-table(cbind(df[1],unlist(df[-1])))
a[]<- ifelse(!a,"no","yes")
a
        Atlanta Lagos New York Shanghai Tokyo CEO Engineer Librarian Mayor Secretary
Person1      no    no      yes       no    no  no       no       yes    no        no
Person2      no    no       no      yes    no  no       no        no    no       yes
Person3      no    no       no       no   yes  no      yes        no    no        no
Person4      no   yes       no       no    no yes       no        no    no        no
Person5     yes    no       no       no    no  no       no        no   yes        no

希望这是一种更简单的方法。只需将所有列排列在 name 变量旁边。做一个表格,并使用ifelsewhere!a表示a==0


推荐阅读