将R中的0和1转换为另一个数据帧

烟囱燕子

我想将数据框转换A为数据框B

A = data.frame(male = c(3, 5), female = c(1,2))

B = data.frame(male = c(1,1,1,1,1,1,1,1,0,0,0), female = c(0,0,0,0,0,0,0,0,1,1,1))

我有这种方法

new <- data.frame(male = c(rep(1, sum(male)), rep(0, sum(female))), female = c(rep(0, sum(male)), rep(1, sum(female))))

这给了我想要的数据帧。

但是,由于我的原始数据帧(A)比示例更复杂,因此有更好的方法吗?

更新

数据帧可能会更复杂,例如

A = data.frame(month = c("July", "August"), male = c(5, 3), female = c(2,1))

转化为

data.frame(month = c(rep("July", 5), rep("July", 2), rep("Aug", 3), rep("Aug", 1)),
       male = c(rep(1, 5), rep(0, 2), rep(1, 3), rep(0, 1)),
       female = c(rep(0, 5), rep(1, 2), rep(0, 3), rep(1, 1)))

#    month male female
#1    July    1      0
#2    July    1      0
#3    July    1      0
#4    July    1      0
#5    July    1      0
#6    July    0      1
#7    July    0      1
#8  August    1      0
#9  August    1      0
#10 August    1      0
#11 August    0      1

谢谢。

阿克伦

我们可以在中执行此操作tidyversegather将数据转换为“长”格式,然后通过uncount“ val”列扩展行,创建1列,按“月”分组,创建一个序列列(ind),spread从“长”到“宽”

library(tidyverse)
gather(A, sex, val, -month) %>%
    uncount(val) %>% 
    mutate(val = 1) %>%
    group_by(month = factor(month, levels = month.name)) %>% 
    mutate(ind = row_number()) %>%
    spread(sex, val, fill = 0) %>%
    select(month, male, female)
# A tibble: 11 x 3
# Groups:   month [2]
#   month   male female
#   <fct>  <dbl>  <dbl>
# 1 July       1      0
# 2 July       1      0
# 3 July       1      0
# 4 July       1      0
# 5 July       1      0
# 6 July       0      1
# 7 July       0      1
# 8 August     1      0
# 9 August     1      0
#10 August     1      0
#11 August     0      1

或使用类似的逻辑 data.table

library(data.table)
dcast(melt(setDT(A), id.var = 'month')[, rep(1, value), 
 .(month, variable)], month + rowid(month) ~ variable, 
    value.var = 'V1', fill = 0)[, month_1 := NULL][]

数据

A <- data.frame(month = c("July", "August"), male = c(5, 3), female = c(2,1))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:将数据帧的结构转换为另一个数据帧的相同结构

r-将一个数据帧强制转换为另一个数据帧的结构

使用grep将值从R中的一个数据帧替换为另一个

如何将两个数据帧转换为另一个数据帧?

如何根据键值将转换为数组的数据帧添加为另一个数据帧的元素

将凌乱的str替换为另一个数据帧中的clean str

Python Pandas:将数据从一个数据帧转换为另一个数据帧

加速 R 中的 tapply 函数,或另一个将数据帧转换为矩阵的函数

将值从一个数据帧替换为另一个

将一个数据帧中的多个列值替换为受公共键列影响的另一个数据帧的值

将存储在数据帧中的函数应用到 R 中的另一个数据帧

根据另一个数据帧和条件将值输入到数据帧中

R-将数据帧中的数据从一个时标转换为另一个时标

如何根据R中的另一个数据帧过滤和子集数据帧

在R中将数据帧归类为R中的另一个数据帧

根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

将一个数据帧切片到另一个数据帧中

将数据帧列与其在另一个数据帧中的参数相乘

根据另一个数据帧中的值将数据帧的列相乘

R-将一个数据帧中的值与另一个数据帧中的多个值进行匹配

如何使用熊猫转置将数据从一个数据帧添加到另一个数据帧?

根据另一个数据帧在R数据帧中创建变量

如何从R中的另一个数据帧展平数据帧变量

数据帧乘法并使用R存储在另一个数据帧中

如何从R中的另一个数据帧中提取数据帧

在 R 中动态地将一个数据帧附加到另一个数据帧上

将值从一个数据帧添加到R中的另一个数据帧

如何将一个数据帧作为子集(完整)查找或匹配到 R 中的另一个数据帧?

将 bin 限制从一个数据帧应用到 R 中的另一个数据帧