R-dplyr与groupby一起,将2行与列VAL合并,虽然VAL正确但混淆了
将我正在努力解决的数据操作问题总结成一个标题是很困难的,但是一个简短的例子很好地总结了这一点。我有一个航空公司相关数据的数据表,其中包含始发机场和目的地机场的列。我的数据如下所示:R-dplyr与groupby一起,将2行与列VAL合并,虽然VAL正确但混淆了,r,dplyr,R,Dplyr,将我正在努力解决的数据操作问题总结成一个标题是很困难的,但是一个简短的例子很好地总结了这一点。我有一个航空公司相关数据的数据表,其中包含始发机场和目的地机场的列。我的数据如下所示: my_data = collect(filter(flightdata, TailNum == t_n) %>% select(airport1=Origin,airport2=Dest,ActualElapsedTime) %>% gro
my_data = collect(filter(flightdata, TailNum == t_n) %>%
select(airport1=Origin,airport2=Dest,ActualElapsedTime) %>%
group_by(airport1,airport2) %>%
summarize(ActualElapsedTime = mean(ActualElapsedTime)))
my_data
airport1 airport2 ActualElapsedTime
<chr> <chr> <dbl>
1 HNL ITO 51.67416
2 HNL KOA 44.00937
3 HNL LIH 37.98526
4 HNL OGG 37.52542
5 ITO HNL 50.02260
6 ITO OGG 39.22222
7 KOA HNL 43.52518
8 KOA OGG 34.20370
9 LIH HNL 33.47679
10 LIH OGG 47.06522
11 OGG HNL 35.28550
12 OGG ITO 37.57143
13 OGG KOA 31.61364
14 OGG LIH 45.46667
但它不起作用 一种方法是创建一个新变量,包含airport1和airport2的每个配对,然后将其作为分组变量汇总数据 在本例中,我们通过按字母顺序粘贴airport1和airport2的名称来创建一个名为composition的变量,因此每个配对都有一个唯一的值
my_data <- collect(
flightdata %>%
filter(TailNum == t_n) %>%
select(airport1 = Origin, airport2 = Dest, ActualElapsedTime) %>%
mutate(combination = ifelse(airport1 < airport2,
paste(airport1, airport2),
paste(airport2, airport1))
) %>%
group_by(combination) %>%
summarize(ActualElapsedTime = mean(ActualElapsedTime))
)
my_数据%
过滤器(TailNum==t\u n)%>%
选择(airport1=原点,airport2=目标,ActualLapsedTime)%>%
变异(组合=ifelse(机场1<机场2,
粘贴(机场1、机场2),
粘贴(机场2、机场1))
) %>%
分组依据(组合)%>%
汇总(ActualLapsedTime=平均值(ActualLapsedTime))
)
这看起来像是一个类似的问题:请看一看,我没有像那篇文章中那样对三个变量的所有组合进行分组。我试图告诉dplyr“对待HNL ITO和ITO HNL一样,即使它们在不同的列中”。我认为最好的方法是正确设置airport1和airport2,就像我在select语句中尝试的那样
my_data <- collect(
flightdata %>%
filter(TailNum == t_n) %>%
select(airport1 = Origin, airport2 = Dest, ActualElapsedTime) %>%
mutate(combination = ifelse(airport1 < airport2,
paste(airport1, airport2),
paste(airport2, airport1))
) %>%
group_by(combination) %>%
summarize(ActualElapsedTime = mean(ActualElapsedTime))
)