如何在PIVOT_WIDTER中而不是列表中获得总值的总和? [英] How to get sum of total values in pivot_wider instead of a list?

查看:0
本文介绍了如何在PIVOT_WIDTER中而不是列表中获得总值的总和?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

    data <- data.frame(row_id = 0:19, Prediction = c(4.20631885375613, 
0.677197140556434, 0.889543113836738, 37.8093227242093, 105.860956599905, 
17.2609337360412, 0.41323004743284, 6.94073422786919, 2.08635131353358, 
72.7283615643886, 12.2655072861912, 3.77794122863612, 4.50660941933039, 
0.877724474431314, 2.86251575017408, 31.3229122662926, 2.32802608836313, 
0.616664152263578, 2.00202294742939, 1.39842036444256), Explanation.1.Strength = c("", 
"", "", "", "+++", "", "--", "", "", "+++", "", "", "", "", "", 
"", "", "", "", ""), Explanation.1.Feature = c("", "", "", "", 
"is_overnight_shipping", "", "number_items", "", "", "is_overnight_shipping", 
"", "", "", "", "", "", "", "", "", ""), Explanation.1.Value = c("", 
"", "", "", "'1'", "", "'1'", "", "", "'1'", "", "", "", "", 
"", "", "", "", "", ""))

我使用的代码:

data %>% 
  mutate(Explanation.1.Strength = if_else(Explanation.1.Strength == "", "unknown", Explanation.1.Strength)) %>%
  pivot_wider(Explanation.1.Feature, names_from = Explanation.1.Strength, values_from = Explanation.1.Value)

我正在使用列表获取输出,如何获取值的总和而不是列表输出?

推荐答案

我们可以使用values_fninpivot_wider返回sum。如果这些元素是NA元素,则使用sum(!is.na(.)),如果只是空白(""),则使用sum(nzchar(.))

library(dplyr)
library(tidyr)
data %>% 
mutate(Explanation.1.Strength = if_else(Explanation.1.Strength == "", "unknown",
  Explanation.1.Strength)) %>%
  pivot_wider(Explanation.1.Feature, names_from = Explanation.1.Strength, values_from = Explanation.1.Value,
      values_fn = list(Explanation.1.Value = ~sum(!is.na(.), na.rm = TRUE)))
# A tibble: 3 x 4
#  Explanation.1.Feature   unknown `+++`  `--`
#  <chr>                     <int> <int> <int>
#1 ""                           17    NA    NA
#2 "is_overnight_shipping"      NA     2    NA
#3 "number_items"               NA    NA     1

这篇关于如何在PIVOT_WIDTER中而不是列表中获得总值的总和?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆