r - استخراج أعمدة محددة من إطار البيانات




dataframe (6)

باستخدام الحزمة dplyr ، إذا كانت البيانات الخاصة بك. تسمى df1 :

library(dplyr)

df1 %>%
  select(A, B, E)

يمكن كتابة هذا أيضًا بدون توجيه %>% كـ:

select(df1, A, B, E)

لدي إطار بيانات R يحتوي على 6 أعمدة ، وأرغب في إنشاء مخطط بيانات جديد يحتوي على ثلاثة أعمدة فقط.

بافتراض أن إطار بياناتي هو df ، وأريد استخراج الأعمدة A و B و E ، فهذا هو الأمر الوحيد الذي يمكنني معرفته:

 data.frame(df$A,df$B,df$E)

هل هناك طريقة أكثر إحكاما للقيام بذلك؟


لسبب ما فقط

df[, (names(df) %in% c("A","B","E"))]

عملت بالنسبة لي. جميع الجمل الواردة أعلاه أسفرت عن "الأعمدة غير المحددة المحددة".


نعم هنالك.

# data for reproducible example
# (and to avoid confusion from trying to subset `stats::df`)
df <- setNames(data.frame(as.list(1:5)), LETTERS[1:5])
# subset
df[,c("A","B","E")]

هذا هو دور الوظيفة subset() :

> dat <- data.frame(A=c(1,2),B=c(3,4),C=c(5,6),D=c(7,7),E=c(8,8),F=c(9,9)) 
> subset(dat, select=c("A", "B"))
  A B
1 1 3
2 2 4

يمكنك أيضًا استخدام حزمة sqldf التي تقوم بإجراء عمليات sqldf على إطارات بيانات R كما يلي:

df1 <- sqldf("select A, B, E from df")

هذا يعطي كإخراج إطار بيانات df1 مع أعمدة: A ، B ، E.


[ والمجموعة الفرعية ليست قابلة للاستبدال:

[ تعيد ناقلات إذا تم تحديد عمود واحد فقط.

df = data.frame(a="a",b="b")    

identical(
  df[,c("a")], 
  subset(df,select="a")
) 

identical(
  df[,c("a","b")],  
  subset(df,select=c("a","b"))
)




dataframe