如何使用 dplyr 在 R 中查找具有第一个值的列?

考虑以下示例数据:

d <- tibble(V1 = c(5, 3, 8, 7),
            V2 = c(4, 0, 2, 6),
            V3 = c(0, 1, 0, 3),
            V4 = c(0, 0, 0, 2))

# A tibble: 4 × 4
     V1    V2    V3    V4
  <dbl> <dbl> <dbl> <dbl>
1     5     4     0     0
2     3     0     1     0
3     8     2     0     0
4     7     6     3     2

我想找到每行前 0 的列名。如果没有零,那么我想获取最后一个列名。

结果应如下所示:

# A tibble: 4 × 5
     V1    V2    V3    V4 firstZero
  <dbl> <dbl> <dbl> <dbl> <chr>    
1     5     4     0     0 V3       
2     3     0     1     0 V2       
3     8     2     0     0 V3       
4     7     6     3     2 V4
阿克伦

max.colbase R很快

 d$firstZero <- ifelse(!rowSums(d == 0), names(d)[ncol(d)], 
   names(d)[max.col(d == 0, 'first')])

使用dplyr

library(dplyr)
d %>% 
 rowwise %>% 
  mutate(firstZero = names(.)[match(0, c_across(everything()), 
       nomatch = ncol(.))]) %>% 
  ungroup

-输出

# A tibble: 4 × 5
     V1    V2    V3    V4 firstZero
  <dbl> <dbl> <dbl> <dbl> <chr>    
1     5     4     0     0 V3       
2     3     0     1     0 V2       
3     8     2     0     0 V3       
4     7     6     3     2 V4       

case_whenmax.col

d %>% 
  mutate(firstZero = names(.)[case_when(!rowSums(across(c(V1, V2, V3)) == 0) ~ 
     ncol(.), TRUE ~  max.col(!across(c(V1, V2, V3)) != 0, "first"))])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在R中的dplyr中使用mutate函数创建一个具有日期值(2000-05-06)的新列

R dplyr 用第一个非“缺失”值替换“缺失”列数据

如何使用r中“下一个”组的第一个值?

如何用第一个非缺失值替换列中的 na 而不会使用 R 删除只有缺失值的案例?

如何使用 dplyr 根据 R 中的另一个数据框匹配列的值?

如何根据 R 中的另一个数据框匹配列的值并使用 dplyr 打印消息?

使用dplyr:在组中,选择满足条件的第一个值

如何使用dplyr过滤r中的日期?

如何在R中使用groupby获取满足条件的列的第一个值?

如何对由“,”分隔的列值升序重新排序,并且只保留 R 中的第一个值

根据 R 中数据框中所有其他列中的字符串值,使用 dplyr 创建一个新列

如何使用dplyr以R中其他两个列的出现为条件创建一个新列?

使用R / dplyr过滤列?

R如何使用条件从dplyr中查找间隔或ntile

如何根据R中列的最小值选择具有dplyr / tidyvese的列

如何用R中每列的第一个值打印数据框的每个元素?

使用dplyr汇总R:2个不同列中的值

在R中,如何读取带有某些行的特殊csv跳过了第一个值?

如何用dplyr计算第一个出现的值的重复次数

使用 dplyr 根据第一个非零值重新定位

在data.frame列中查找第一个值[R]

如何查找列中的第一个值大于该列中的前一个值

R:如何在计算中使用列中的第一个值,然后为以下行切换到此结果

通过dplyr在第一个遇到的数字上使用单独的(tidyr)分离列

如何使用 dplyr R 跨多列应用汇总

如何使用dplyr R选择名称作为日期的列

如何从R中的向量中提取第一个和最后一个非空值?

如何在 R 中的第一个位置为列表的每个对象添加一个值

我们如何使用DPLYR过滤R中的联接