gpt4 book ai didi

R:是否可以在部分重复行的多个选择列中组合 boolean 数据?

转载 作者:行者123 更新时间:2023-12-02 08:06:51 25 4
gpt4 key购买 nike

首先,对于我的问题措辞如此可怕,我深表歉意。我想不出更好、更简洁的写作方式,所以希望接下来的内容能帮助阐明这一点——欢迎提出任何提高其清晰度的建议,以便将来为同样的事情而苦苦挣扎的人们更容易理解.

我正在使用 R 中的数据框,其中包含一些带有重复 ID 标记的行。每行有四列关联,其中包含 boolean 值,每行只有一个记录为真,这样一来,如果重复 ID 标签, boolean 值为真的列将不同。以下是我正在处理的数据的一个非常简短的示例部分:

dbsid     l_e      l_d      n_e      b_c
CCH00090 TRUE FALSE FALSE FALSE
CCH00091 FALSE FALSE TRUE FALSE
CCH00090 FALSE TRUE FALSE FALSE

我希望最终得到以下结果(尽管规模要大得多):

dbsid     l_e      l_d      n_e      b_c
CCH00090 TRUE TRUE FALSE FALSE
CCH00091 FALSE FALSE TRUE FALSE

但无法想出任何方法来产生这样的输出。请注意,在重复条目的情况下, boolean 数据已被合并,以便将真值保留在假值之上。我一直在研究聚合函数,但没有运气强制它执行上述操作。

有可能吗?感谢您花时间阅读我的问题。

最佳答案

您可以使用 dplyr 中的 summarize_all 执行此操作:

library(dplyr)

df %>%
group_by(dbsid) %>%
summarize_all(sum)

结果:

# A tibble: 2 x 5
dbsid l_e l_d n_e b_c
<fctr> <int> <int> <int> <int>
1 CCH00090 1 1 0 0
2 CCH00091 0 0 1 0

或使用 any (@Ryan):

df %>%
group_by(dbsid) %>%
summarize_all(any)

结果:

# A tibble: 2 x 5
dbsid l_e l_d n_e b_c
<fctr> <lgl> <lgl> <lgl> <lgl>
1 CCH00090 TRUE TRUE FALSE FALSE
2 CCH00091 FALSE FALSE TRUE FALSE

数据:

df = structure(list(dbsid = structure(c(1L, 2L, 1L), .Label = c("CCH00090", 
"CCH00091"), class = "factor"), l_e = c(TRUE, FALSE, FALSE),
l_d = c(FALSE, FALSE, TRUE), n_e = c(FALSE, TRUE, FALSE),
b_c = c(FALSE, FALSE, FALSE)), .Names = c("dbsid", "l_e",
"l_d", "n_e", "b_c"), class = "data.frame", row.names = c(NA,
-3L))

关于R:是否可以在部分重复行的多个选择列中组合 boolean 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50687204/

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