r - 从具有因子的列到具有 0、1 的两个不同列
问题描述
我在数据框中有一列 group1 group 2 。
group <- c( "group1", "group1", "group2", "group1", "group2" )
value<- c(1:5)
dat <- data.frame(value, group)
我想变成这样-
group1 <- c(1, 1, 0, 1, 0)
group2 <- c(0, 0, 1, 0, 1)
dat<- data.frame(value, group1, group2)
我试过了,但稍后必须删除组列
dat<- dat %>%
mutate( group1 = ifelse(data1$group =="group1", 1, 0 ),
group2 = ifelse(data1$group =="group2", 1, 0 ) )
有没有其他好方法来完成这项工作。
在此先感谢您的帮助。
解决方案
使用基本 R 选项reshape
replace(
out <- reshape(
cbind(dat, q = 1),
direction = "wide",
idvar = "value",
timevar = "group"
),
is.na(out),
0
)
给予
value q.group1 q.group2
1 1 1 0
2 2 1 0
3 3 0 1
4 4 1 0
5 5 0 1
推荐阅读
- sql - 从表 2 中提取最后一个日期时间,该日期时间在日期时间被拉入表 1 之前发生
- html - 如何在 Flask-WTforms StringField 中隐藏活动字符计数器并实现 CSS
- python - 如何解决Robot Framework日志中以“\u0e”开头的乱码
- ios - png 透明图像元数据带有白色背景
- python - 使用 Python 的 URL 请求
- javascript - 从 filter 和 findIndex 循环的更好解决方案?更短的解决方案?JS
- sql-server - 如何查看当前的渐变尺寸设置?
- ssl - mitmproxy 可以记录“TLS Client Hello”和“TLS Server Hello”消息吗?
- android - 在不离开父屏幕的情况下导航到新屏幕
- docker - 将多个环境变量从 docker 添加到 kubernetes