r - 还回名字

标签 r dataframe

我有一个 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/

相关文章:

python - 时间序列: Mean per hour per day per Id number

在 Nextflow 管道中运行 Rscript

mysql - RMySQL、dbWriteTable 和包含换行符的文本字段

r - 在ggplot中,如何将绘图标题设置为使用函数时选择的x变量

python - 我如何通过 Pandas 分组来获得总和?

python - 按行分组、NaN 值和数字之间的联接和选择

r - R 中的元素重复与全局重复

R:使用自定义内核(用户定义内核)的 SVM 性能在 kernlab 中不起作用

python - 按 bool 变量分组并使用每组 pandas 的结果创建一个新列

python - 基于python中R函数的替代因素拆分