gpt4 book ai didi

r - 按行编辑数据

转载 作者:行者123 更新时间:2023-12-04 14:30:46 25 4
gpt4 key购买 nike

我正在尝试在 R 中转换我的数据,但我无法获得我想要的列。
我的数据集如下,我想得到的列是“total”,它是D1+D2+D3+D4+D5的总和,忽略“NA”。


NR
D1
D2
D3
D4
D5
全部的


一种
1
不适用
不适用
1
不适用
2


不适用
不适用
不适用
不适用
不适用
不适用

C
不适用
1
不适用
不适用
不适用
1


这可能是一个相当愚蠢的问题,但我无法理解。
我已经尝试过:

total <- NA 
total <- ifelse(D1==1, 1, total)
total <- ifelse(D2==1, total + 1, total)
total <- ifelse(D3==1, total + 1, total)
total <- ifelse(D4==1, total + 1, total)
total <- ifelse(D5==1, total + 1, total)
但它将我所有的行返回到“NA”
我试过:
total <- mutate(dataset, total=D1+D2+D3+D4+D5)
但是我没有得到 D1 到 D5 的值的聚合。

最佳答案

我们可以使用 rowSums

df1$total <- rowSums(df1[startsWith(names(df1), "D")], na.rm = TRUE)
df1$total[df1$total == 0] <- NA

或在 dplyr 中的相同逻辑
library(dplyr)
df1 %>%
mutate(total = na_if(rowSums(select(., starts_with('D')), na.rm = TRUE), 0))
NR D1 D2 D3 D4 D5 total
1 A 1 NA NA 1 NA 2
2 B NA NA NA NA NA NA
3 C NA 1 NA NA NA 1
数据
df1 <- structure(list(NR = c("A", "B", "C"), D1 = c(1L, NA, NA), D2 = c(NA, 
NA, 1L), D3 = c(NA, NA, NA), D4 = c(1L, NA, NA), D5 = c(NA, NA,
NA), total = c(2L, NA, 1L)), class = "data.frame", row.names = c(NA,
-3L))

关于r - 按行编辑数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68432262/

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