gpt4 book ai didi

r - 是否有 R 函数仅从具有许多 NA 值的逗号分隔字符串中提取数字以创建仅包含数字的列?

转载 作者:行者123 更新时间:2023-12-04 09:22:17 26 4
gpt4 key购买 nike

我有一个看起来像这样的数据集:

 before = data.frame(diag1 = c(1,NA, 1, NA, NA, 1), diag2 = c(NA, NA, NA, 2, NA, NA), diag3 = c(3, NA, NA, NA, 3, 3), diag4 = c(4, 4, NA, NA, 4, NA))

diag1 diag2 diag3 diag4
1 1 NA 3 4
2 NA NA NA 4
3 1 NA NA NA
4 NA 2 NA NA
5 NA NA 3 4
6 1 NA 3 NA

我一直试图找到一个解决方案,其中最终结果是一个名为“诊断”的新列,看起来像这样
  diagnoses
1 1,3,4
2 4
3 1
4 2
5 3,4
6 1,3

这只是我真正问题的一个小得多的例子。在我正在处理的数据集中,有超过 70 列诊断,每行不超过 3 个数值。我尝试过 strsplit、separate、unite 函数。我还没有找到优雅的解决方案

我使用了应用粘贴功能
dat$diagnoses<- apply( (dat[ , cols]), 1, function(x) paste(na.omit(x),collapse=", ") )

但是,它会生成一个包含许多逗号的字符串。

我尝试用 gsub 替换 ,但我仍然无法得到我希望的结果。

这是我能够得到的输出: "1,,3,4,," ",,,4,," " 1,,,,," ",2,,,," ",,3,4,," "1,,3,,,"

最佳答案

一个选项是使用 apply 遍历行,删除 NA元素和 paste它在一起

before$new <- apply(before, 1, function(x) toString(x[!is.na(x)]))
before$new
#[1] "1, 3, 4" "4" "1" "2" "3, 4" "1, 3"

关于r - 是否有 R 函数仅从具有许多 NA 值的逗号分隔字符串中提取数字以创建仅包含数字的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57894017/

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