r - 在 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 很陌生,所以我愿意使用任何工具来做到这一点。提前非常感谢!
解决方案
在基础 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 变量旁边。做一个表格,并使用ifelse
where!a
表示a==0
推荐阅读
- javascript - 通过从服务器端获取数据在客户端显示字符串
- selenium - 如何将硒与灯塔集成
- node.js - 所有简单(循环)路径查询返回太多数据 -> 堆溢出
- javascript - 使用 javascript 在 for 数据循环中调用共享点 API 的最佳方法
- python-3.x - 在Python中获取一定的数字组合
- c++ - SystemKernelVaShadowInformation 和 SystemSpeculationControlInformation 是否可以替代 NtQuerySystemInformation?
- sql - 在 SQL Server 查询中有条件地应用多个计数
- increment - 如何将值递增 1 直到 while 循环内的某个点(伪代码)?
- jenkins - 詹金斯管道卡在步骤 ChannelClosedException
- ios - IOS - Admob 未加载真实(奖励)广告