Saya memiliki bingkai data R dengan 6 kolom, dan saya ingin membuat kerangka data baru yang hanya memiliki tiga kolom.
Dengan asumsi frame data saya df
, dan saya ingin kolom ekstrak A
, B
dan E
, ini adalah satu-satunya perintah saya bisa mengetahui:
data.frame(df$A,df$B,df$E)
Apakah ada cara yang lebih ringkas untuk melakukan ini?
df1 %>% select(A, B, E) %>% rowMeans(.)
. Lihat dokumentasi untuk%>%
pipa dengan mengetik?magrittr::`%>%`
Anda dapat subset menggunakan vektor nama kolom. Saya sangat suka pendekatan ini daripada mereka yang memperlakukan nama kolom seolah-olah mereka adalah nama objek (misalnya
subset()
), terutama ketika pemrograman dalam fungsi, paket, atau aplikasi.sumber
object of type 'closure' is not subsettable
.df
.df
juga merupakan fungsi dalam paket statistik.-"A"
ini adalah kesalahan sintaksis. Dan?Extract
mengatakan, " , juga bisa bilangan bulat negatif, menunjukkan unsur-unsur / irisan meninggalkan keluar dari seleksi."i
j
...
> df[,c("A")]
[1] 1
. Menggunakansubset
tidak memiliki kelemahan ini.Ini adalah peran dari
subset()
fungsi:sumber
c("A", "B")
ini vektor, bukan daftar.Ada dua pilihan yang jelas: Joshua Ulrich
df[,c("A","B","E")]
atauseperti dalam
sumber
Hanya untuk beberapa alasan
bekerja untukku. Semua sintaksis di atas menghasilkan "kolom tidak terdefinisi terpilih".
sumber
Di mana df1 adalah bingkai data asli Anda:
sumber
dplyr
. Itu menggunakanbase::subset
, dan identik dengan jawaban Stephane Laurent kecuali bahwa Anda menggunakan nomor kolom bukan nama kolom.Anda juga dapat menggunakan
sqldf
paket yang melakukan pemilihan pada bingkai data R sebagai:Ini memberikan sebagai output frame data
df1
dengan kolom: A, B, E.sumber
Anda bisa menggunakan
with
:sumber
Anda juga dapat menetapkan nama yang berbeda untuk data yang baru dibuat
sumber
[
dan subset tidak dapat diganti:[
mengembalikan vektor jika hanya satu kolom yang dipilih.sumber
drop=FALSE
. Contoh:df[,c("a"),drop=F]