我嘗試從R中的mtcars數據集提取數據,特別是那些名稱以'M'開頭的車,但是車的名稱不是變量,所以我不能做到像選擇mtcars數據集,以字母「M」開頭的名稱
Subset <- mtcars[grep("M", mtcars$name), ]
一些東西有沒有人知道如何解決這個問題? 謝謝
我嘗試從R中的mtcars數據集提取數據,特別是那些名稱以'M'開頭的車,但是車的名稱不是變量,所以我不能做到像選擇mtcars數據集,以字母「M」開頭的名稱
Subset <- mtcars[grep("M", mtcars$name), ]
一些東西有沒有人知道如何解決這個問題? 謝謝
@Pumpkin C - 不確定,爲什麼這會得到負面投票。汽車名稱爲mtcars
數據集中的rownames
。以下將產生所需的輸出:
> mtcars[grep('^M', rownames(mtcars)),]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
太謝謝你了。一個問題,也許太簡單了,你是怎麼知道這些汽車名稱在mtcars中被稱爲'rownames'的,因爲如果我打印mtcars或使用名稱(mtcars),它會讓我從mpg,cyl開始... ...所以我有點困惑我得到'rownames' –
'print(mtcars)'會顯示整個數據集及其「rownames」。 'name(mtcars)'只會顯示'列'名稱(原因是你沒有看到車名)。正如@ G5W在評論中所建議的那樣,「rownames(mtcars)」顯示了數據幀 – Sagar
的「rownames」。謝謝! –
@薩加爾的答案很好,簡潔。我只是在這裏添加這個,以便tidyverse方法是首選。
suppressPackageStartupMessages(library(tidyverse))
library(stringr)
mtcars %>%
rownames_to_column() %>%
filter(str_detect(rowname, "^M"))
#> rowname mpg cyl disp hp drat wt qsec vs am gear carb
#> 1 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
#> 2 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
#> 3 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
#> 4 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
#> 5 Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
#> 6 Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
#> 7 Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
#> 8 Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
#> 9 Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
#> 10 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
謝謝!....... –
添加到薩格爾的答案,markdly是由包括data.table
解決tidyverse方法。
library(data.table)
dat <- data.table(mtcars, keep.rownames = TRUE)
dat[rn %like% "^M"]
# rn mpg cyl disp hp drat wt qsec vs am gear carb
# 1: Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
# 2: Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
# 3: Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
# 4: Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
# 5: Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
# 6: Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
# 7: Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
# 8: Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
# 9: Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
# 10: Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
這很酷!這個data.table有點像python中的熊貓嗎? –
你可以用'rownames(mtcars)得到的名字' – G5W