gpt4 book ai didi

r - 根据包含列名的输入向量过滤数据框

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

我有一个数据框如下

Sol_name    geo_pos     loc_pos     dol_pos    pol_pos   kol_pos

A 1 1 0 0 1
B 0 1 1 0 0
C 1 0 1 1 1
D 0 1 0 0 1

我需要创建一个函数,用户可以在其中将列名输入到向量中,并且数据框将被过滤,其中任何列中的值为 1

示例:如果输入是 col_nm = c("geo_pos","dol_pos")那么我正在寻找的输出是
Sol_name    geo_pos     loc_pos     dol_pos    pol_pos   kol_pos

A 1 1 0 0 1
B 0 1 1 0 0
C 1 0 1 1 1

有什么有效的方法可以做到这一点吗?

数据
df <- read.table(text="Sol_name    geo_pos     loc_pos     dol_pos    pol_pos   kol_pos
A 1 1 0 0 1
B 0 1 1 0 0
C 1 0 1 1 1
D 0 1 0 0 1",h=T)

最佳答案

我们可以使用 rowSums在这里可以有效地过滤所选列中至少有一个“1”的行。

get_one_rows <- function(cols) {
df[rowSums(df[cols] == 1) > 0, ]
}

col_nm = c("geo_pos","dol_pos")
get_one_rows(col_nm)

# Sol_name geo_pos loc_pos dol_pos pol_pos kol_pos
#1 A 1 1 0 0 1
#2 B 0 1 1 0 0
#3 C 1 0 1 1 1


col_nm = c("kol_pos")
get_one_rows(col_nm)

# Sol_name geo_pos loc_pos dol_pos pol_pos kol_pos
#1 A 1 1 0 0 1
#3 C 1 0 1 1 1
#4 D 0 1 0 0 1

关于r - 根据包含列名的输入向量过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52111343/

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