R 隔离具有相同值的列

R 隔离具有相同值的列,r,R,我试图隔离数据帧中所有观测值都相同的列(忽略NAs)。下面是一个假设的例子: ForestName <- rep("Planige", 4) TreeNumber <- c(1:4) Height <- c(2.3, 2, 2.1, 2.9) Type <- c("AA", "AA", NA, "AA") df <- data.frame(ForestName, TreeNumber, Height, Type) df ForestName在许多其他方法中,我确信

我试图隔离数据帧中所有观测值都相同的列(忽略NAs)。下面是一个假设的例子:

ForestName <- rep("Planige", 4)
TreeNumber <- c(1:4)
Height <- c(2.3, 2, 2.1, 2.9)
Type <- c("AA", "AA", NA, "AA")
df <- data.frame(ForestName, TreeNumber, Height, Type)
df

ForestName在许多其他方法中,我确信:

df[,sapply(df,function(x) {length(unique(x[!is.na(x)])) > 1})]

   TreeNumber Height
1          1    2.3
2          2    2.0
3          3    2.1
4          4    2.9

您可以通过对
表达式求反来获得其他列。

在许多其他方法中,我确信:

df[,sapply(df,function(x) {length(unique(x[!is.na(x)])) > 1})]

   TreeNumber Height
1          1    2.3
2          2    2.0
3          3    2.1
4          4    2.9

您可以对
sapply
表达式求反以获得其他列。

您可以使用
unique
并检查它是否简化为单个元素:

df[sapply(df,function(x) length(unique(x[!is.na(x)])))==1]
  ForestName Type
1    Planige   AA
2    Planige   AA
3    Planige <NA>
4    Planige   AA

您可以使用
unique
并检查这是否减少为单个元素:

df[sapply(df,function(x) length(unique(x[!is.na(x)])))==1]
  ForestName Type
1    Planige   AA
2    Planige   AA
3    Planige <NA>
4    Planige   AA

使用相同基本原理的更紧凑的方法

 Filter(function(x){length(unique(x[!is.na(x)])) <=1}, df)

Filter(function(x){length(unique(x[!is.na(x)])一种使用相同基本原理的更紧凑的方法

 Filter(function(x){length(unique(x[!is.na(x)])) <=1}, df)
Filter(函数(x){length(唯一的(x[!is.na(x)]))