作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有 mtcars
数据集,想要计算一组不同汽车之间的函数,将几列作为输入。
更具体地说:
am
和齿轮 gear
分组disp1>disp2
hp1>hp2
结果应该是这样的:
# Car1 Car2 result
# Mazda RX4 Mazda RX4 Wag false
# Mazda RX4 Datsun 710 false
# Mazda RX4 Wag Datsun 710 true
在this question是按组的外层操作,但只用到了单列。是否可以将其扩展到多个列?如果可能的话,最好在结果表中包含 disp1
、disp2
等列。
最佳答案
这有点乱,但您可以执行以下操作:
library(dplyr)
library(tidyr)
dat <- mtcars %>%
tibble::rownames_to_column(var = "Car1") %>%
mutate(Car2 = Car1) %>%
group_by(am, gear) %>%
expand(Car1, Car2) %>%
left_join(tibble::rownames_to_column(mtcars, var = "Car1"), by = "Car1") %>%
left_join(tibble::rownames_to_column(mtcars, var = "Car2"), by = "Car2") %>%
ungroup() %>%
mutate(result = disp.x > disp.y & hp.x > hp.y) %>%
select(Car1, Car2, result)
然后我们得到了预期的结果:
dat
# A tibble: 330 x 3
Car1 Car2 result
<chr> <chr> <lgl>
1 AMC Javelin AMC Javelin FALSE
2 AMC Javelin Cadillac Fleetwood FALSE
3 AMC Javelin Camaro Z28 FALSE
4 AMC Javelin Chrysler Imperial FALSE
5 AMC Javelin Dodge Challenger FALSE
6 AMC Javelin Duster 360 FALSE
7 AMC Javelin Hornet 4 Drive TRUE
8 AMC Javelin Hornet Sportabout FALSE
9 AMC Javelin Lincoln Continental FALSE
10 AMC Javelin Merc 450SE FALSE
# … with 320 more rows
dat %>% filter(Car1 == "Mazda RX4")
# A tibble: 8 x 3
Car1 Car2 result
<chr> <chr> <lgl>
1 Mazda RX4 Datsun 710 TRUE
2 Mazda RX4 Fiat 128 TRUE
3 Mazda RX4 Fiat X1-9 TRUE
4 Mazda RX4 Honda Civic TRUE
5 Mazda RX4 Mazda RX4 FALSE
6 Mazda RX4 Mazda RX4 Wag FALSE
7 Mazda RX4 Toyota Corolla TRUE
8 Mazda RX4 Volvo 142E TRUE
(虽然马自达 RX4 与 Datsun 710 的比较与您陈述的预期结果不同,但实际上是正确的:)
mtcars %>%
tibble::rownames_to_column(var = "Car1") %>%
filter(Car1 %in% c("Mazda RX4", "Datsun 710"))
Car1 mpg cyl disp hp drat wt qsec vs am gear carb
1 Mazda RX4 21.0 6 160 110 3.90 2.62 16.46 0 1 4 4
2 Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
关于R 元素到元素的操作在组中的几列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61574824/
我正在尝试使用描述的方法将数据表转换为字典 here , 但我得到一个错误 Cannot implicitly convert type System.Collections.Generic.Dict
我想在几个列上使用 orderBY,但它们应该像一列一样。 该表看起来像这样: col1 | col2 5 | 2 | | 3 7 | | 1 | 1
我有这张表 mytable: +----+--------------------------------------+ | id | date1 | date2 | date3
我是一名优秀的程序员,十分优秀!