R 如何基于另一列求和一列?
假设数据帧存储为R 如何基于另一列求和一列?,r,R,假设数据帧存储为水果,格式如下: State Fruit Category Fruit Type Gross Value ACT CitrusFruit Mandarins $4,500,000 ACT CitrusFruit Oranges NSW PomeFruit
水果
,格式如下:
State Fruit Category Fruit Type Gross Value
ACT CitrusFruit Mandarins $4,500,000
ACT CitrusFruit Oranges
NSW PomeFruit Apple $139,130,203.50
NSW Grapes Wine Production $50,000,000
NSW OrchardStoneFruit Avocados $10,031,123
QLD CitrusFruit Oranges
我将如何基于状态对总值求和-同时排除空白值。但同时,每个州的总值应该加起来,而不是对柑橘、柚子等单独显示
我试着使用
library(plyr)
counts
方法无效
任何帮助都将不胜感激
编辑:
我尝试使用以下方法:
library(dplyr)
fruit %>%
group_by(State) %>%
summarise(Gross = sum(Gross))
但是,我得到一个错误,它说:
Evaluation Error: 'sum' not meaningful for factors.
编辑:
来自dput的输出(水果)
您应该将因子转换为数字,然后求和。以下是我提出的解决方案:
library(tidyverse)
##This line converts the factor into a numeric variable, by making it a character and then removing the commas and the dollar sign. Finally it converts to number
fruit$`Gross Value` <- as.numeric(str_replace_all(as.character(fruit$`Gross Value`),"\\$|\\,",""))
##Then you can run your sum function
fruit %>%
group_by(State) %>%
summarise(Gross = sum(`Gross Value`, na.rm = TRUE))
库(tidyverse)
##此行将因子转换为数字变量,方法是将其设置为字符,然后删除逗号和美元符号。最后它转换成数字
水果$`总值`%
按(州)分组%>%
总结(总值=总和(`Gross Value`,na.rm=TRUE))
您应该将系数转换为数字,然后求和。以下是我提出的解决方案:
library(tidyverse)
##This line converts the factor into a numeric variable, by making it a character and then removing the commas and the dollar sign. Finally it converts to number
fruit$`Gross Value` <- as.numeric(str_replace_all(as.character(fruit$`Gross Value`),"\\$|\\,",""))
##Then you can run your sum function
fruit %>%
group_by(State) %>%
summarise(Gross = sum(`Gross Value`, na.rm = TRUE))
库(tidyverse)
##此行将因子转换为数字变量,方法是将其设置为字符,然后删除逗号和美元符号。最后它转换成数字
水果$`总值`%
按(州)分组%>%
总结(总值=总和(`Gross Value`,na.rm=TRUE))
这里有几个问题:
- 您的数据中没有
,而是总值
总值
- 该列是
,它是一种更高效的字符串存储形式。因子
和因子
都不能是字符
med。R对会计一无所知,因此在这种情况下,sum
对它来说毫无意义“$”
library(dplyr)
someData %>%
mutate(Gross.Value = as.numeric(gsub("[^0-9.]", "", as.character(Gross.Value)))) %>%
group_by(State) %>%
summarize(Gross.Value = sum(Gross.Value, na.rm=TRUE))
# # A tibble: 8 x 2
# State Gross.Value
# <fct> <dbl>
# 1 ACT 0
# 2 NSW 564400574.
# 3 NT 20133040.
# 4 QLD 1053007677.
# 5 SA 691850721.
# 6 TAS 112902970.
# 7 VIC 1069102796.
# 8 WA 281014929.
库(dplyr)
某些数据%>%
变异(Gross.Value=as.numeric(gsub(“[^0-9.]”,“”,as.character(Gross.Value)))%>%
按(州)分组%>%
汇总(总值=总和(总值,na.rm=真))
##A tibble:8 x 2
#州总值
#
#1第0幕
#2新南威尔士州564400574。
#新台币20133040元。
#4昆士兰1053007677。
#5 SA 691850721。
#6塔斯112902970。
#7维克1069102796。
#8 WA 281014929。
我的评论中唯一的变化是:(1)使用正确的列名,(2)添加
na.rm=TRUE
,因为您有许多空格。这意味着您需要小心如何使用这些数据,因为您现在的摘要中存在偏见和不准确之处这里有几个问题:
- 您的数据中没有
,而是总值
总值
- 该列是
,它是一种更高效的字符串存储形式。因子
和因子
都不能是字符
med。R对会计一无所知,因此在这种情况下,sum
对它来说毫无意义“$”
library(dplyr)
someData %>%
mutate(Gross.Value = as.numeric(gsub("[^0-9.]", "", as.character(Gross.Value)))) %>%
group_by(State) %>%
summarize(Gross.Value = sum(Gross.Value, na.rm=TRUE))
# # A tibble: 8 x 2
# State Gross.Value
# <fct> <dbl>
# 1 ACT 0
# 2 NSW 564400574.
# 3 NT 20133040.
# 4 QLD 1053007677.
# 5 SA 691850721.
# 6 TAS 112902970.
# 7 VIC 1069102796.
# 8 WA 281014929.
库(dplyr)
某些数据%>%
变异(Gross.Value=as.numeric(gsub(“[^0-9.]”,“”,as.character(Gross.Value)))%>%
按(州)分组%>%
汇总(总值=总和(总值,na.rm=真))
##A tibble:8 x 2
#州总值
#
#1第0幕
#2新南威尔士州564400574。
#新台币20133040元。
#4昆士兰1053007677。
#5 SA 691850721。
#6塔斯112902970。
#7维克1069102796。
#8 WA 281014929。
我的评论中唯一的变化是:(1)使用正确的列名,(2)添加
na.rm=TRUE
,因为您有许多空格。这意味着您需要小心如何使用这些数据,因为您现在的摘要中存在偏见和不准确您的$`总价值
实际上是“$4500000”
?如果是这样,您需要首先转换为一个数字。是的,在csv文件中,它是作为$4500000
提供的。我在您的示例数据中没有看到“国家”?通常使用dput(someData)的输出是有帮助的
要向用户提供一些样本数据来解决问题,有两点需要粘贴dput
输出到问题:(1)它让我们更好地了解数据中的内容,特别是在这里识别因素,尽管这是毫无疑问的;(2)它允许我们快速复制并粘贴到控制台中。不幸的是,你发布的方式在所有内容的前面都包含了评论字符(我已经把它们删掉了),但是让我们更容易找到答案肯定会更快/更好。考虑阅读其他的“好问题”技术:参考文献:你的代码> $'总值' <代码>实际上<代码>“4500000美元”< /代码>?如果是这样,您需要首先转换为一个数字。是的,在csv文件中,它是作为$4500000
提供的。我在您的示例数据中没有看到“国家”?通常使用dput(someData)的输出是有帮助的
要向用户提供一些样本数据来解决问题,有两点需要粘贴dput
输出到问题:(1)它让我们更好地了解数据中的内容,特别是在这里识别因素,尽管这是毫无疑问的;(2)它允许我们快速复制并粘贴到控制台中。不幸的是,你发布的方式在所有内容的前面都包含了评论字符(我已经把它们删掉了),但是让我们更容易找到答案肯定会更快/更好。考虑阅读其他的“好问题”技巧:参考文献:谢谢。我试过了,但是我得到了一个奇怪的错误,我不明白:<代码>错误,谢谢,我试过了,但是我得到了一个奇怪的错误,我不明白:<代码>错误,非常感谢!我不太明白为什么它是Gross.Value
而不是Gross-Value
,因为在CSV文件中它列在Gross-Value
下。另外,是否可以使用%%>%arrange(desc(n))
以降序显示它?R不喜欢列中的空格