【问题标题】:Use apply function on subsequently more columns在随后的更多列上使用应用功能
【发布时间】:2018-06-26 00:45:22
【问题描述】:

我是 R 的新用户,我正在使用应用函数来计算列中的相似变量。我想先计算第一列中的相似变量,然后我想计算第一列和第二列中的相似变量,而不是只计算第二列中的相似变量。然后随后添加一个额外的列。 apply(df, 2, function(x){ x1 <- count(na.omit(x))})

我的数据如下所示。

df <- data.frame(x = c('a', 'b', 'b'), y = c(NA, 'b','c'), z = c(NA, NA, 'a'))

我想要这个输出:

|x|count|
a | 1
b | 2

|x|y|count|
b | b | 1
b | c | 1

|x|y|z|count
b | c |a | 1

非常感谢任何帮助。

【问题讨论】:

  • 为什么要转发你明确决定删除的earlier question,而不是回复各种人离开的cmets?这不是这里的工作方式!
  • 我投票决定将此问题作为题外话结束,因为这是 OP 对 identical question 的重新发布; OP 没有回复 cmets,而是决定删除并重新发布。

标签: r apply


【解决方案1】:

我们可以考虑使用dplyr 包来完成这个任务。

library(dplyr)

lapply(1:ncol(df), function(i){
  df2 <- df %>%
    select(1:i) %>%
    na.omit() %>%
    group_by_all() %>%
    tally() %>%
    ungroup()
  return(df2)
})

# [[1]]
# # A tibble: 2 x 2
#   x         n
#   <fct> <int>
# 1 a         1
# 2 b         2
# 
# [[2]]
# # A tibble: 2 x 3
#   x     y         n
#   <fct> <fct> <int>
# 1 b     b         1
# 2 b     c         1
# 
# [[3]]
# # A tibble: 1 x 4
#   x     y     z         n
#   <fct> <fct> <fct> <int>
# 1 b     c     a         1

【讨论】:

    【解决方案2】:

    您可以使用索引来访问列,然后使用table 获取频率表,如下所示:

    lapply(seq_len(ncol(df)), 
        function(i) {
            #take only complete cases, i.e. discard those rows with any NAs in columns
            x <- df[complete.cases(df[, seq_len(i)]), seq_len(i)]
    
            #use table to get frequency count
            as.data.frame(table(x))
    })
    

    输出:

    [[1]]
      x Freq
    1 a    1
    2 b    2
    
    [[2]]
      x y Freq
    1 b b    1
    2 b c    1
    
    [[3]]
      x y z Freq
    1 b c a    1
    

    【讨论】:

    • 您好,感谢您的回复。当我使用您的代码时,我会得到不同的输出。我明白了,有没有办法排除 0 频率? x y 频率 a b 0 bc 1 ac 0 bc 1
    • 我使用complete.cases 排除了 0 个频率。否则你可以使用out[out$Freq &gt; 0,],其中out是as.data.frame(table(df))的输出
    猜你喜欢
    • 2018-09-26
    • 2017-03-14
    • 1970-01-01
    • 2021-07-12
    • 2019-03-23
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多