我一般对R和脚本编写都是新手。如果这是一个非常基本的问题,请耐心等待。我搜索解决方案失败。
date.depature <- c("2016.06.16", "2016.11.16", "2017.01.05", "2017.01.12", "2017.02.25")
airport.departure <- c("CDG", "QNY", "QXO", "CDG", "QNY")
airport.arrival <- c("SYD", "CDG", "QNY", "SYD", "QXO")
amount <- c("1", "3", "1", "10", "5")
df <- data.frame(date.depature, airport.departure, airport.arrival, amount)
我想将df更改为一个矩阵,该矩阵以airport.departure为行,而airport.arrival为列,并在矩阵的单元格中提供给定月/年的累积量。
答案 0 :(得分:3)
您正在寻找ngOnDestroy
,即
xtabs
给出,
xtabs(amount ~ airport.arrival + airport.departure, df)
PS
正如@Andre Elrico所提到的,由于某种原因,您将 airport.departure
airport.arrival CDG QNY QXO
CDG 0 3 0
QNY 0 0 1
QXO 0 5 0
SYD 11 0 0
变量声明为字符串。您需要先转换为整数,然后再计算总和
建议的解决方案:
amount
答案 1 :(得分:0)
使用dplyr软件包:
library(dplyr)
df %>% mutate(month.departure =substr(date.depature, 1, 7)) %>%
group_by(airport.departure, airport.arrival, month.departure) %>%
summarize(total = sum(as.numeric(as.character(amount))))
as.numeric(as.character())
,是因为'amount'是作为一个因子类型开始的,不能将其相加[{as.character()
是必需的,因为as.numeric如果直接调用该因子会产生意外行为]。 total =
给出要包含在输出表中的任意列名称;您可以省去它,但仍然可以使用。输出:
(输出表的格式与您所描述的不同,但是它包含了您要查找的所有信息。并且dplyr是一个不错的软件包,可以开始学习这种数据操作!)