gpt4 book ai didi

r - 还回名字

转载 作者:行者123 更新时间:2023-12-05 01:37:20 25 4
gpt4 key购买 nike

我有一个 df 看起来像这样:

我想得到所有至少连续出现 2 次 1 的名字。

在这种情况下,我只想返回 B C D F。

有没有办法做到这一点?

最佳答案

我们可以循环遍历行,使用 rle(查找是否有连续元素)并创建逻辑索引以对“名称”进行子集化

df1$Name[apply(df1[-1], 1, function(x) {
rl <- rle(x==1)
any(rl$lengths[rl$values]>=2)})]
#[1] "B" "C" "D" "F"

更快的方法可能是粘贴每行中的元素,然后使用正则表达式环视查找 1 是否后跟 1

df1$Name[grepl("(?<=1)1", do.call(paste0, df1[-1]), perl = TRUE)]
#[1] "B" "C" "D" "F"

数据

df1 <- structure(list(Name = c("A", "B", "C", "D", "E", "F"), `2000` = c(1L, 
0L, 1L, 1L, 0L, 0L), `2001` = c(0L, 0L, 1L, 1L, 1L, 1L), `2002` = c(0L,
1L, 0L, 1L, 0L, 0L), `2003` = c(1L, 1L, 0L, 1L, 1L, 1L), `2004` = c(0L,
0L, 1L, 1L, 0L, 1L), `2005` = c(1L, 1L, 1L, 0L, 1L, 1L)), .Names = c("Name",
"2000", "2001", "2002", "2003", "2004", "2005"), class = "data.frame",
row.names = c(NA, -6L))

关于r - 还回名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50644876/

25 4 0