r - 从 r 中的变量选项创建带有 1 和 0 的变量
问题描述
我正在尝试从我的数据框中的一个选项中创建新变量。这是我的初始数据框:
d1 <- data.frame("id" = c(1,1,2,2,3,4,5), "type" = c("A","B","C","C","A","B","C"))
id type
1 1 A
2 1 B
3 2 C
4 2 C
5 3 A
6 4 B
7 5 C
因此,如果想根据"type"
for each的值创建新变量id
,我想获得这种数据框:
d2 <- data.frame("id" = c(1,1,2,2,3,4,5), "type" = c("A","B","C","C","A","B","C"),
"type.A" = c(1,0,0,0,1,0,0), "type.B" = c(0,1,0,0,0,1,0),
"type.C" = c(0,0,1,1,0,0,1))
id type type.A type.B type.C
1 1 A 1 0 0
2 1 B 0 1 0
3 2 C 0 0 1
4 2 C 0 0 1
5 3 A 1 0 0
6 4 B 0 1 0
7 5 C 0 0 1
如果特定的 等于,则1
在新变量中给出(type.A
在这种情况下),否则给出。由于这是大数据分析中的常见问题(我认为),我想知道是否有解决此问题的功能。"type"
"id"
A
0
解决方案
cbind(d1, setNames(data.frame(+sapply(unique(d1$type), function(x)
d1$type == x)), unique(d1$type)))
# id type A B C
#1 1 A 1 0 0
#2 1 B 0 1 0
#3 2 C 0 0 1
#4 2 C 0 0 1
#5 3 A 1 0 0
#6 4 B 0 1 0
#7 5 C 0 0 1
推荐阅读
- ansible - Ansible playbook:如何正确打印和显示输出
- c++ - 如何在 shared_ptr 上使用 dynamic_pointer_cast
>? - spring - Spring Framework 3.2:如何通过 RestTemplate 为所有请求添加基本身份验证
- php - mysql跳过一些更新查询
- swift - 带有可选元素的扩展可选数组。甚至可能吗?
- jquery - 强制模块使用 runtimeChunk: 'single' 初始化
- controller - 我如何复制 Prestashop 1.6 后台页面(AdminOrdersController)
- entity-framework - 通过 ASP.NET MVC 4 中的实体框架插入后触发器未触发
- java - Java StringBuffer 在特定偏移处动态附加字符串
- dart - 拦截来自 Dart 程序的 https 请求