r - 添加一个新列以计算 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 输出如下:B
C
NA
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)
解决方案
假设您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)
推荐阅读
- javascript - javascript定时器改变颜色
- c# - 简单的 asp.net 标签助手列表<> 问题
- ruby-on-rails - Rails Engine 在视图中处理错误的控制器
- reactjs - 使用箭头键导航 Material-ui 列表
- java - Java-PDF 已保存,但 java 只能看到旧的 PDF
- java - 将列表复制到Java中的列表列表中的通用方法
- apache-kafka - Kafka 多消费者和延迟
- css - 在 Gulp 中如何防止 gulp-sass 将 css 缩小为 1 个文件
- python - 如何在 matplotlib 条形图中将一行设置为 x 轴?
- python-3.x - 如何一次为多个变量分配相同的值或 nan?