gpt4 book ai didi

r - 将数据框转换为方形数据框

转载 作者:行者123 更新时间:2023-12-04 11:09:29 24 4
gpt4 key购买 nike

假设我有以下 df:

library (tidyverse)
df <- tribble(
~ID, ~V1, ~V2,~V3,
'1', NA,1, NA,
'2', 1,1,NA,
'3', 1,NA,NA,
'4', NA,NA,1,
'5', 1,1,1,
'6',NA,NA,1,
'7',1,NA,1
)

现在,当 V1=1 时,我想分别对 V2 和 V3 的值求和,并相应地对其他变量求和。我想获得以下 df-

   df2 <- tribble(
~Var,~V1,~V2,~V3,
'V1',0,2,1,
'V2',2,0,1,
'V3',1,1,0
)

最佳答案

使用 do.callmapply 的选项如下:

do.call(rbind, mapply(function(x){
v <- colSums(df[!is.na(df[,x]) & df[,x]==1,-1], na.rm = TRUE)
v[x-1] <- 0
v
}, 2:4, SIMPLIFY = FALSE))

# V1 V2 V3
# [1,] 0 2 2
# [2,] 2 0 1
# [3,] 2 1 0

注意:(1,3)(3,1) 的预期输出与问题中提到的值不匹配。也许 OP 需要非常重视这两个值。

关于r - 将数据框转换为方形数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49950219/

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