2015-09-15 3 views
0

У меня есть data.frame вроде этого:сортировать data.frame по имени персонажа

DeviceName    SessionLength 
samsung SM-A500FU   6168 
samsung SM-N9005   16199 
iPad3,3     5447 
Sony C6602    13838 
Iriver tolino tab 7  13657 
iPhone6,2     13434 
samsung SAMSUNG-SGH-I317 13292 
... 

Мне нужно сортировать эту таблицу, чтобы увидеть, что DeviceName есть все SessionLengths < 200. Есть идеи?

+1

'subset (df, SessionLength <200)'. Хотя вы должны публиковать то, что вы пробовали, задавая вопрос. –

+0

Или 'df [df $ SessionLength <200,]'. – RHertel

+0

Если вы хотите отсортировать данные, вы можете использовать 'df [order (df $ SessionLength),]' –

ответ

3

Мы можем использовать функцию aggregate() в сочетании с max() определить наибольшее значение SessionLength для каждого DeviceName и сохранить результат в новом кадре данных df2:

df2 <- aggregate(SessionLength ~ . , df1, max) 

Тогда мы можем взять подмножество этих данных , выбрав только те устройства со значением SessionLength ниже определенного предела. Здесь я поставил предел до 10000, так как с данными выборки данных в ОП предел 200 приведет к пустым вектором:

> as.vector(with(df2, DeviceName[SessionLength < 10000])) 
#[1] "iPad3,3"   "samsung SM-A500FU" 

Результат содержит только имена устройств, для которых все записи SessionLength значение меньше, чем 10000.

данные

df1 <-read.table(text=" DeviceName    SessionLength 
         'samsung SM-A500FU'   6168 
         'samsung SM-N9005'   16199 
         'iPad3,3'     5447 
         'iPad3,3'     2345 
         'Sony C6602'    13838 
         'Iriver tolino tab 7'  13657 
         'iPhone6,2'     13434 
         'samsung SAMSUNG-SGH-I317' 13292", header=T) 
+1

Thx, работает отлично. – Smasell

1

Пожалуйста, обратитесь к подмножества и порядка функций.

# Data Frame 
my.df <- data.frame(name = c("D", "E", "Z", "A", "R", "U", "B", "X") 
        , qty = c(100, 300, 500, 200, 30, 10, 40, 50) 
        ) 

# Subset 
my.200 <- subset(x  = my.df 
       , subset = qty < 200 
       ) 

    name qty 
1 D 100 
5 R 30 
6 U 10 
7 B 40 
8 X 50 

# Ordering 
my.order <- order(x = my.200$name) 

[1] 4 1 2 3 5  

# Ordered Data Frame 
my.200 <- my.200[ my.order, ] 

    name qty 
7 B 40 
1 D 100 
5 R 30 
6 U 10 
8 X 50 
Смежные вопросы