gpt4 book ai didi

r - 如何在 R 中为多个维度构建二进制 data.frame?

转载 作者:行者123 更新时间:2023-12-02 07:00:58 24 4
gpt4 key购买 nike

我有一个包含三个因子的数据框,其中两个是二进制的,第三个是整数:

       DATA   YEAR1   YEAR2   REGION1   REGION2
OBS1 X 1 0 1 0
OBS2 Y 1 0 0 1
OBS3 Z 0 1 1 0

等等

现在我想把它改成这样

       YEAR1_REGION1   YEAR1_REGION2   YEAR2_REGION1   YEAR2_REGION2
OBS1 X 0 0 0
OBS2 0 Y 0 0
OBS3 0 0 Z 0

基本矩阵乘法不是我想要的。我想找到一种巧妙的方法来执行此操作,该方法也会自动重命名列。我的实际数据具有三个因子维度和 20*8*6 个观察值,因此最终总共会有 960 列。

最佳答案

这是另一种基于 outer 的方法,类似于@Roland 的回答。

year <- grep("YEAR", names(DF), value = TRUE)
region <- grep("REGION", names(DF), value = TRUE)
data <- as.character(DF$DATA)

df <- outer(year, region, function(x, y) DF[,x] * DF[,y])
colnames(df) <- outer(year, region, paste, sep = "_")
df <- as.data.frame(df)

for (i in seq_len(ncol(df)))
df[as.logical(df[,i]), i] <- data[as.logical(df[,i])]

df
## YEAR1_REGION1 YEAR2_REGION1 YEAR1_REGION2 YEAR2_REGION2
## OBS1 X 0 0 0
## OBS2 0 0 Y 0
## OBS3 0 Z 0 0

关于r - 如何在 R 中为多个维度构建二进制 data.frame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20949398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com