2016-02-24 2 views
0

У меня есть dataframe с уникальными значениями $ Number, определяющий конкретные точки, где пересекает многоугольник. Некоторые точки (т. Е. 56) имеют 3 пересекающихся многоугольника. Я хочу, чтобы извлечь три строки, которые начинаются с 56.Выбор строк в фрейме данных с одинаковыми значениями

df <- cbind(Number = rownames(check), check) 
    df 

df table

Этот вопрос идет вперед, я буду применяющим это на 10000 пунктов и не будет знать, повторяющееся число, например, «56» , Итак, есть ли способ получить общее выражение, которое выбирает строки с общим совпадением, не зная этого значения?

+1

Пожалуйста, не включайте изображения данных. Создайте правильный [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) с образцовыми входными данными и желаемым выходом для этих данных. – MrFlick

ответ

0

Если мы хотим $ Номер с более чем 3 пунктов, то мы можем использовать dplyr к группе $ Номер, а затем сохранить $ Номер, если он имеет более 3 отсчетов

library(dplyr) 

# Data 
df <- data.frame(Number = c(1,1,1,2,2,3,3)) 

# Filtering 
df %>% group_by(Number) %>% filter(n() >= 3) 
0

Вы можете достичь желаемых результатов с:

subset2 <- function(n) df[floor(df$Number) == n,] 

где df это имя набора данных и Number это имя целевого столбца. Мы можем заполнить n при необходимости:

#Example 
df <- data.frame(Number=c(1,3,24,56.65,56.99,56.14,66),y=sample(LETTERS,7)) 
df 
# Number y 
# 1 1.00 J 
# 2 3.00 B 
# 3 24.00 D 
# 4 56.65 R 
# 5 56.99 I 
# 6 56.14 H 
# 7 66.00 V 

subset2(56) 
# Number y 
# 4 56.65 R 
# 5 56.99 I 
# 6 56.14 H 
1

Я просто изменил столбец $ Номера в числовое поле, а затем округляется до целых данных.

numeric <- as.numeric(as.character(df$Number)) 
    Id <- floor(numeric) 
Смежные вопросы