2015-05-12 3 views
2

Извините, если мой вопрос очень прост, но я просто не могу найти простой способ сделать это!R выбрать несколько строк по условному номеру строки

У меня есть R dataframe как этот:

a<-c(1,2,3,4,5) 
b<-c(6,7,8,9,10) 
df<-data.frame(a,b) 
colnames(df)<-c("a","b") 

df 
    a b 
1 1 6 
2 2 7 
3 3 8 
4 4 9 
5 5 10 

Я хотел бы получить 1-й, 2-й, 3-й и 5-й строке столбца a, так 1 2 3 5, выбрав строк по их количеству.

Я пробовал df$a[1:3,5], но получаю Error in df$a[1:3, 5] : incorrect number of dimensions. Что работает c(df$a[1:3],df$a[5]), но мне было интересно, был ли более простой способ достичь этого с помощью R?

Спасибо за ваши предложения! :)

+1

Вы попробовали 'df [c (1: 3, 5)," a ")]'? –

+0

try 'df [df [c (1: 3, 5), 1],]'. –

+0

@Mamoun Benghezal Он работает с 'df [c (1: 3, 5),« a »]' (без скобки;))! Благодаря! Таким образом, существует необходимость в команде 'c()' так или иначе – tlorin

ответ

4

Ваш фрейм данных имеет два размера (строки и столбцы). Когда вы используете квадратные скобки для извлечения значений, R ожидает все до запятой, чтобы указать нужные строки, и все после запятой, чтобы указать желаемые столбцы (см.: ?[). Следовательно, df[1:3,5] означает строки с 1 по 3, из столбца 5. Чтобы превратить нужные строки в один вектор, вам необходимо объединить (т. Е. c(1:3,5)). Все это пройдет до запятой, указатель столбца, 1 или "a", пойдет после запятой. Таким образом, df[c(1:3,5), 1] - это то, что вам нужно.


Для альтернативного ответа (который может быть более подходящим для dataframe с многими столбцами), df[c(1:3, 5), "a"] как предложено @Mamoun Benghezal бы также сделать это!

+0

спасибо за объяснение! Я отредактировал ваш ответ, чтобы включить предложение @Mamoud Benghezal :) – tlorin

+0

@tlorin, это нормально использовать. Однако я не знаю, что он более удобен для использования в кадре данных с множеством столбцов. – gung

+0

Я просто думал, что если у вас есть dataframe со 100 столбцами с именами столбцов, может быть проще получить значения, представляющие интерес, по имени столбца, а не подсчитывать, чтобы получить хороший номер столбца;) – tlorin

Смежные вопросы