如何在R中对数据帧列进行子集化/索引时处理元组?

时间:2017-11-20 16:45:30

标签: r dataframe indexing tibble

我目前正在对我的数据框列进行子集化,如df_subset <- df[,c(2)]

       Measurement
       ------------
1        2752
2        2756
3        2756
4        2740
5        2724
6        2536
7        2796
8        2800

输出显示这是一个50 x 1的tibble,这是有意义的,因为有50行和1列。但是,我不知道如何处理这些问题。根据我的理解,我不能像列表或矢量那样索引它。索引是否容易索引,如果是,如何?如果没有,我将如何将其转换为列表/向量?只是为了让你知道我想做什么,让我们说我要索引第8,15,23和47个测量值,我希望最终输出理想地是一个矢量或其他东西这很容易使用。

2 个答案:

答案 0 :(得分:1)

索引tibble与索引data.frame相同,但data.frame s尝试返回最低维度的事实除外,因此存在以下差异:

library(tibble)
df = data.frame(Measurement = c(2752,2756,2756,2740,2724,2536,2796,2800))
df_tib = as.tibble(df)

index = c(2,3,6,7)

索引数据框:

df[index,]
# [1] 2756 2756 2536 2796

df_tib[index,]
# A tibble: 4 x 1
#   Measurement
#         <dbl>
# 1        2756
# 2        2756
# 3        2536
# 4        2796

请注意,df[index,]在索引后被强制转换为向量,因为data.frame看到它是一个只有一列的数据框。 tibble没有做出这种强制。要覆盖此属性,您可以使用drop=FALSE

df[index,, drop=FALSE]
#   Measurement
# 2        2756
# 3        2756
# 6        2536
# 7        2796

要在建立索引后获取向量,您实际上要将 Measurement编入索引。这与data.frametibble完全相同:

df$Measurement[index]
# [1] 2756 2756 2536 2796

df_tib$Measurement[index]
# [1] 2756 2756 2536 2796

答案 1 :(得分:0)

专门用于从小标题中获取列,可以使用pull()

tb %>% pull(2)
tb %>% pull(Measurement)