【问题标题】:summing number of different columns汇总不同列的数量
【发布时间】:2020-09-19 13:05:06
【问题描述】:

我想返回除名称列之外的不同列数的数据框列表,我想返回相同的列。所以对于这个例子,它会返回

list3$dfa

     names X  Y   Z
1    Ben   1  1   2

list3$dfb

   names  X  Y  Z
1  John   2  2  2

请让我知道我将如何做到这一点。

【问题讨论】:

  • 为什么要从问题中删除数据?

标签: r dataframe for-loop dplyr


【解决方案1】:

我们可以从purrr使用map2

library(dplyr)
library(purrr)
map2(list1, list2, ~  
      tibble(Name = select(.x, names) %>% slice(1),
      map2_dfc(.x[-1], .y[-1],  ~ 100 *mean(.x != .y))))
#$dfa
# A tibble: 1 x 4
#  Name$names     X     Y     Z
#  <chr>      <dbl> <dbl> <dbl>
#1 Ben         33.3  33.3  66.7

#$dfb
# A tibble: 1 x 4
#  Name$names     X     Y     Z
#  <chr>      <dbl> <dbl> <dbl>
#1 John          50    50    75

【讨论】:

    【解决方案2】:

    你可以使用Map:

    Map(function(x, y) data.frame(Name = x[[1]][1], 
                           t(colMeans(x[-1] != y[-1])) * 100), list1, list2)
    
    #$dfa
    #  Name    X    Y    Z
    #1  Ben 33.3 33.3 66.7
    
    #$dfb
    #  Name  X  Y  Z
    #1 John 50 50 75
    

    【讨论】:

    • @user123231322 它会给你数字而不是字符吗?您的names 列因子是?您可以在数据框调用中添加stringsAsFactors = FALSE 以将其更改为字符? names 是您的数据框列表中的第一列吗?
    猜你喜欢
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2021-09-05
    • 2021-06-10
    • 2018-12-10
    • 2022-11-17
    相关资源
    最近更新 更多