我有一个包含数据的Excel文件(5列200行)。
行是下一个:
TransactionId
,UserId
,transaction_date
,transaction_status
,amount_USD
。
data.table就是这样(它并不完整,只是为了抓住这个主意):
datatable1的屏幕截图
该任务将表重新排列,使其看起来像3列(transaction_date,CHARGED,DECLINED),其中CHARGED和DECKLINED-是具有相同状态(收费或已拒绝)的同一日期的所有amount_USD的总和。
因此,它看起来应该像这样:
而且,当我使用此类代码从Excel导入时-是否正确?
> library("xlsx")
> data1 <- read.xlsx("d:/R/1.xlsx", 1)
听起来您想按日期和交易类型(收费/已拒绝)进行分组。
我不确定您是否出于特定原因打算使用R,所以为您省力,我将向您展示在R中使用R的一种方法以及如何在Excel中使用R。
如果您打算将R用于此任务,则可能需要将当前Excel文件'filename.xlsx'另存为'filename.csv',因为R需要一些其他库才能读取Excel本机文件。他们从来没有为我工作过,所以我只使用.csv文件。
我创建的dummy_csv文件的格式与您一样,因此只需根据需要更改代码即可:
> dummy_csv
transaction_ID Date Transaction_type Amount
1 101 12.1.2016 Charged $270.29
2 102 1.6.2015 Declined $840.25
3 103 12.1.2016 Charged $233.26
4 104 1.7.2016 Declined $406.04
5 105 1.7.2016 Charged $886.73
6 106 12.1.2016 Declined $348.44
7 107 3.8.1015 Charged $430.09
8 108 3.7.2015 Declined $655.17
这是代码:
install.packages('dplyr') # Install dplyr if you don't have it.
library(dplyr) # Load dplyr
dummy_csv <- read.csv("~/dummy_csv.csv") # Import dataset
dummy_csv <- tbl_df(dummy_csv) # Convert to table dataframe via dplyr
dummy_csv$Amount <- sub(pattern = "$", # Get rid of dollar signs
replacement = "",
x=as.character(dummy_csv$Amount),
fixed=TRUE)
dummy_csv <- mutate(dummy_csv,Amount = as.numeric(Amount)) # Make the values numeric
dummy_csv <- dummy_csv %>%
group_by(Date,Transaction_type) %>%
summarise('Daily_Total' = sum(Amount))
R中的输出将是:
Date Transaction_type Daily_Total
(fctr) (fctr) (dbl)
1 1.6.2015 Declined 840.25
2 1.7.2016 Charged 886.73
3 1.7.2016 Declined 406.04
4 12.1.2016 Charged 503.55
5 12.1.2016 Declined 348.44
6 3.7.2015 Declined 655.17
7 3.8.1015 Charged 430.09
您可以在不使用R的情况下在Excel中完成相同的任务。
在Excel中突出显示数据范围,然后单击“插入”菜单->数据透视表。
在“数据透视表”对话框中,将“日期”和“ Transaction_Type”拖到“行”框中。将“数量”拖到“值”框中,然后将计算设置为SUM()。
输出将是相同的。
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句