如果在R中重复所有值,请用NA填充列

Matt_4

我有一个数据框,其中包含来自ANOVA测试的重要字母。我想仅在所有字母都相等时(即,无显着差异)用NA填充字母列

我试过了:

library(dplyr)    
df<- data.frame(A=rnorm(5),B=rep("a",5))
df %>%  mutate(B = ifelse(length(unique(B)) == 1,NA, B))

这适用于用NA填充,但不适用于用旧值重新填充列:

df2<- data.frame(A=rnorm(5),B=c("b","a","ab","a","b"))
df2 %>%  mutate(B = ifelse(length(unique(B)) == 1,NA, B))
            A B
1  1.67671299 b
2  0.21659428 b
3 -1.50746338 b
4  0.82024729 b
5 -0.01105568 b 

实际上,它不会再次用原始值填充它。我也试过了,但是没有用

df2 %>%   mutate_if((length(unique(.)) == 1),list(rep(NA,nrow(df))))
Error: `.p` is invalid.
x `.p` should have the same size as the number of variables in the tibble.
i `.p` is size 1.
i The tibble has 2 columns, non including the grouping variables.
罗纳克·沙

由于您正在执行标量比较,因此请使用if/else而不是vectorized ifelse

library(dplyr)
df2 %>%  mutate(C = if(n_distinct(B) == 1) NA else B)

#           A  B  C
#1  1.6989886  b  b
#2 -0.6174008  a  a
#3  1.3540749 ab ab
#4  1.1774202  a  a
#5  0.8964335  b  b

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果在重复的相同非 NA 值之间,则用最后的非 NA 填充 NA 值

如果在表中多次发现 a 列中的相同值,则排除所有行

如果在R中满足条件,则用多列中的NA替换值

检查多列的值,如果在 R 中找不到,则用 NA 替换

如果在一个简单且干净的csv中,第一个1000 + x观测值中有NA,则read_csv(readr,R)用NA填充整个列(解析失败)

如何从表中获取所有数据,如果在同一列中重复相同的值,则该行应计数一次?

如果在熊貓中一列的所有值都為空,則填充

如果在R中适用,请用\ n替换第二个空格

如果在 Pandas 数据框中的组内满足条件,则更改列中的所有值

如果在列中找到特定值,如何获取行中所有值的列表

如果在組內熊貓中存在值,則填充新列

如果在R的列中重复一个单词,则合并行

如果在列B中找不到A列中的值,请删除R中的行

如果在 R 中有一些共同的行值,如何对列的值求和?

如果在另一列中具有相同的值,则仅保留第一次出现的重复列值

如果在 R 中满足两个条件,则删除所有 id

如果在一列中具有相同的值,则连接行

如果在不同的数据帧大小中多个列的值相等-R

Excel公式:如果在B列中找到重复项,则在D列中添加“ Y”值

如果在SQL Server中填充了另一列,如何检查该列是否有价值?

将单元格值转换为列标题,如果在python中匹配则将其填充为1

如果在 dplyr r 中与 groupby 匹配列,则求和

如果在Pandas中删除重复项时保留一列值不为None的行

JavaScript:如果在特定索引中发现重复值,是否有从数组中删除项目的函数?

如果在一个组中添加是,一列包含python列表中的所有元素

如果在一列中重复了值,我如何将另一列中的某些值提取到新列中?

如果在SPSS中使用列,如何从列表中获取具有最大值的列的标签?

如果在熊猫交换后列值相同,则删除重复项

如果在特定列中发现重复项,则用于更改值的 Excel VBA 代码