首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何计算单个值的列数?

如何计算单个值的列数?
EN

Stack Overflow用户
提问于 2019-06-26 08:10:07
回答 1查看 406关注 0票数 2

我有一个数据集,其中一堆字符列只有一个值,即列本身的名称。每一行都是一个观察值,我想计算每一行有多少这样的列。

例如:

代码语言:javascript
复制
id multi_value_col single_value_col_1 single_value_col_2
1  A               single_value_col_1 
2  D2              single_value_col_1 single_value_col_2
3  Z6                                 single_value_col_2

我想要的是添加一个列,该列计算每行有多少个单值列。如下所示:

代码语言:javascript
复制
id multi_value_col single_value_col_1 single_value_col_2  count
1  A               single_value_col_1                     1 
2  D2              single_value_col_1 single_value_col_2  2
3  Z6                                 single_value_col_2  1

我最初的想法是使用mutate_ifn_distinct,将字符串替换为TRUE,然后可以在带有rowSums的mutate中使用:

代码语言:javascript
复制
data %>% 
 mutate_if(~n_distinct(.) == 1, TRUE, .) %>%
 mutate(count = rowSums???)

然而,我不能让mutate_if工作,我也不确定rowSums命令--有没有跨行的sum_if真正的操作?

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 09:40:29

根据您的数据或空白单元格中是否有NA,您可以使用以下基R方法之一,我们首先找出只有一个唯一值的列,然后计算这些列中每行的非NA或非空单元格的数量。

如果你有NA

代码语言:javascript
复制
cols <- which(sapply(df, function(x) length(unique(na.omit(x)))) == 1)
df$count <- rowSums(!is.na(df[cols]))

df
#  id multi_value_col single_value_col_1 single_value_col_2 count
#1  1               A single_value_col_1               <NA>     1
#2  2              D2 single_value_col_1 single_value_col_2     2
#3  3              Z6               <NA> single_value_col_2     1

如果您有空单元格

代码语言:javascript
复制
cols <- which(sapply(df, function(x) length(unique(x[x!=""]))) == 1)
df$count <- rowSums(df[cols] != "")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56763524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档