gpt4 book ai didi

r - 如何对多列中的小写值对数据框进行子集化

转载 作者:行者123 更新时间:2023-12-04 16:38:05 25 4
gpt4 key购买 nike

我有一个这样的数据框:

set.seed(12)
df <- data.frame(
v1 = sample(LETTERS, 10),
v2 = sample(LETTERS, 10),
v3 = sample(LETTERS, 10),
v4 = c(sample(LETTERS, 8), sample(letters, 2)),
v5 = c(sample(letters, 1), sample(LETTERS, 7), sample(letters, 2))
)
df
v1 v2 v3 v4 v5
1 B K F G p
2 U U T W N
3 W J C V Y
4 G I Q S E
5 D F E N T
6 A X Z T C
7 V Y K X I
8 M Z D Q A
9 Y L H k d
10 R B L j t

我想子集 dfdf 中包含小写值的那些行上的列。可以这样做:
df1 <- df[grepl("[a-z]", df$v1) | grepl("[a-z]", df$v2) | grepl("[a-z]", df$v3) |
grepl("[a-z]", df$v4) | grepl("[a-z]", df$v5), ]
df1
v1 v2 v3 v4 v5
1 B K F G p
9 Y L H k d
10 R B L j t

但这是不经济的,如果您有很多(更多)列,并且容易出错。有没有更干净、更简单、更经济的方法,最好是在基 R 中?

最佳答案

df[rowSums(sapply(df, function(x) x %in% letters)) > 0,]
#OR
df[apply(df == sapply(df, tolower), 1, any),]
# v1 v2 v3 v4 v5
#1 B L L M e
#9 R N D t t
#10 F X M h x

关于r - 如何对多列中的小写值对数据框进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253002/

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