首页 > 解决方案 > 添加一个新列以计算 R 中多列(按行)的不同

问题描述

我有一个数据框,NA 是缺失值,而不是字符串

df <- data.frame(A = c(142, 1, 4),
             B = c("NA",1,5),
             c = c("NA","NA","NA"),
             stringsAsFactors = FALSE) 

我想添加一个新列D来显示两者的计数不同值,A但我们不计入。Desire 输出如下:BCNA

df <- data.frame(A = c(142, 1, 4),
             B = c("NA",1,5),
             c = c("NA","NA","NA"),
             D = c(1, 1, 2),
             stringsAsFactors = FALSE) 

标签: r

解决方案


假设您NA的 's 是 real NA's 而不是 string "NA"s 使用dplyr(>= 1.0.0) 你可以这样做:

library(dplyr)

df %>%
  rowwise() %>%
  mutate(D = n_distinct(na.omit(c_across())))

#     A     B c         D
#  <dbl> <dbl> <lgl> <int>
#1   142    NA NA        1
#2     1     1 NA        1
#3     4     5 NA        2

数据

df <- type.convert(df)

推荐阅读