如何把蹂躏数据框
library(dplyr)
library(tidyr)
tdata <- mtcars[1:10, 1:3]
tdata <- data.frame(name = rownames(tdata), tdata)
knitr::kable(tdata)
|
name |
mpg |
cyl |
disp |
Mazda RX4 |
Mazda RX4 |
21.0 |
6 |
160.0 |
Mazda RX4 Wag |
Mazda RX4 Wag |
21.0 |
6 |
160.0 |
Datsun 710 |
Datsun 710 |
22.8 |
4 |
108.0 |
Hornet 4 Drive |
Hornet 4 Drive |
21.4 |
6 |
258.0 |
Hornet Sportabout |
Hornet Sportabout |
18.7 |
8 |
360.0 |
Valiant |
Valiant |
18.1 |
6 |
225.0 |
Duster 360 |
Duster 360 |
14.3 |
8 |
360.0 |
Merc 240D |
Merc 240D |
24.4 |
4 |
146.7 |
Merc 230 |
Merc 230 |
22.8 |
4 |
140.8 |
Merc 280 |
Merc 280 |
19.2 |
6 |
167.6 |
gather宽变长,“key”和“value”都是新增的列,后面表示要合并的列
g1 <- gather(tdata, key = "Key", value = "Value", cyl, disp,
mpg)
knitr::kable(g1)
name |
Key |
Value |
Mazda RX4 |
cyl |
6.0 |
Mazda RX4 Wag |
cyl |
6.0 |
Datsun 710 |
cyl |
4.0 |
Hornet 4 Drive |
cyl |
6.0 |
Hornet Sportabout |
cyl |
8.0 |
Valiant |
cyl |
6.0 |
Duster 360 |
cyl |
8.0 |
Merc 240D |
cyl |
4.0 |
Merc 230 |
cyl |
4.0 |
Merc 280 |
cyl |
6.0 |
Mazda RX4 |
disp |
160.0 |
Mazda RX4 Wag |
disp |
160.0 |
Datsun 710 |
disp |
108.0 |
Hornet 4 Drive |
disp |
258.0 |
Hornet Sportabout |
disp |
360.0 |
Valiant |
disp |
225.0 |
Duster 360 |
disp |
360.0 |
Merc 240D |
disp |
146.7 |
Merc 230 |
disp |
140.8 |
Merc 280 |
disp |
167.6 |
Mazda RX4 |
mpg |
21.0 |
Mazda RX4 Wag |
mpg |
21.0 |
Datsun 710 |
mpg |
22.8 |
Hornet 4 Drive |
mpg |
21.4 |
Hornet Sportabout |
mpg |
18.7 |
Valiant |
mpg |
18.1 |
Duster 360 |
mpg |
14.3 |
Merc 240D |
mpg |
24.4 |
Merc 230 |
mpg |
22.8 |
Merc 280 |
mpg |
19.2 |
g2 <- gather(tdata, key = "Key", value = "Value", cyl:disp)
knitr::kable(g2)
name |
mpg |
Key |
Value |
Mazda RX4 |
21.0 |
cyl |
6.0 |
Mazda RX4 Wag |
21.0 |
cyl |
6.0 |
Datsun 710 |
22.8 |
cyl |
4.0 |
Hornet 4 Drive |
21.4 |
cyl |
6.0 |
Hornet Sportabout |
18.7 |
cyl |
8.0 |
Valiant |
18.1 |
cyl |
6.0 |
Duster 360 |
14.3 |
cyl |
8.0 |
Merc 240D |
24.4 |
cyl |
4.0 |
Merc 230 |
22.8 |
cyl |
4.0 |
Merc 280 |
19.2 |
cyl |
6.0 |
Mazda RX4 |
21.0 |
disp |
160.0 |
Mazda RX4 Wag |
21.0 |
disp |
160.0 |
Datsun 710 |
22.8 |
disp |
108.0 |
Hornet 4 Drive |
21.4 |
disp |
258.0 |
Hornet Sportabout |
18.7 |
disp |
360.0 |
Valiant |
18.1 |
disp |
225.0 |
Duster 360 |
14.3 |
disp |
360.0 |
Merc 240D |
24.4 |
disp |
146.7 |
Merc 230 |
22.8 |
disp |
140.8 |
Merc 280 |
19.2 |
disp |
167.6 |
g3 <- gather(tdata, key = "Key", value = "Value", mpg, cyl,
-disp)
knitr::kable(g3)
name |
disp |
Key |
Value |
Mazda RX4 |
160.0 |
mpg |
21.0 |
Mazda RX4 Wag |
160.0 |
mpg |
21.0 |
Datsun 710 |
108.0 |
mpg |
22.8 |
Hornet 4 Drive |
258.0 |
mpg |
21.4 |
Hornet Sportabout |
360.0 |
mpg |
18.7 |
Valiant |
225.0 |
mpg |
18.1 |
Duster 360 |
360.0 |
mpg |
14.3 |
Merc 240D |
146.7 |
mpg |
24.4 |
Merc 230 |
140.8 |
mpg |
22.8 |
Merc 280 |
167.6 |
mpg |
19.2 |
Mazda RX4 |
160.0 |
cyl |
6.0 |
Mazda RX4 Wag |
160.0 |
cyl |
6.0 |
Datsun 710 |
108.0 |
cyl |
4.0 |
Hornet 4 Drive |
258.0 |
cyl |
6.0 |
Hornet Sportabout |
360.0 |
cyl |
8.0 |
Valiant |
225.0 |
cyl |
6.0 |
Duster 360 |
360.0 |
cyl |
8.0 |
Merc 240D |
146.7 |
cyl |
4.0 |
Merc 230 |
140.8 |
cyl |
4.0 |
Merc 280 |
167.6 |
cyl |
6.0 |
spread长变宽,“key”和“value”表示要操作的列
gdata <- gather(tdata, key = "Key", value = "Value", 2:4)
s1 <- spread(gdata, key = "Key", value = "Value")
knitr::kable(s1)
name |
cyl |
disp |
mpg |
Datsun 710 |
4 |
108.0 |
22.8 |
Duster 360 |
8 |
360.0 |
14.3 |
Hornet 4 Drive |
6 |
258.0 |
21.4 |
Hornet Sportabout |
8 |
360.0 |
18.7 |
Mazda RX4 |
6 |
160.0 |
21.0 |
Mazda RX4 Wag |
6 |
160.0 |
21.0 |
Merc 230 |
4 |
140.8 |
22.8 |
Merc 240D |
4 |
146.7 |
24.4 |
Merc 280 |
6 |
167.6 |
19.2 |
Valiant |
6 |
225.0 |
18.1 |
df <- data.frame(x = c(NA, "a.b", "a.d", "b.c"))
s2 <- separate(df, col = x, into = c("A", "B"))
knitr::kable(s2)
df <- data.frame(x = c(NA, "a.b-c", "a-d", "b-c"))
s3 <- separate(df, x, into = c("A", "B"), sep = "-")
knitr::kable(s3)
x <- separate(df, x, into = c("A", "B"), sep = "-")
u <- unite(x, col = "AB", A, B, sep = "-")
knitr::kable(u)
网友评论