使用R中的数据帧循环的子集

时间:2017-11-12 17:03:30

标签: r statistics

我有一个数据框,其中包含值为1-5的50个变量,但其中一些包含的值大于5,如18656,我需要从数据帧中删除所有这些值。是否有能够做到这一点的功能。

我正在使用此代码

func <- function(df_likert, col){
  df_likert <- subset(df_likert, col <= 5)
}

for (i in names(df_likert)) {
  func(df_likert, i)
}

1 个答案:

答案 0 :(得分:0)

library(dplyr)

# example dataset
dt = data.frame(x1 = c(1,2,3,4,5),
                x2 = c(3,3,4,5,10),
                x3 = c(10,1,1,2,3))

# original dataset
dt

#   x1 x2 x3
# 1  1  3 10
# 2  2  3  1
# 3  3  4  1
# 4  4  5  2
# 5  5 10  3

# update dataset
dt %>%
  mutate_all(function(x) ifelse(x > 5, NA, x)) %>%
  na.omit()

#   x1 x2 x3
# 2  2  3  1
# 3  3  4  1
# 4  4  5  2

如您所述,此解决方案会删除值大于5的所有行。如果您排除na.omit部分,则可以使用NA替换这些值,而不是删除整行。