簡體   English   中英

按字符名稱對data.frame排序

[英]sort data.frame by character name

我有一個像這樣的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
...

我需要對該表進行排序,以查看所有SessionLengths < 200 DeviceName 有任何想法嗎?

我們可以結合使用aggregate()函數和max() aggregate()函數來為每個DeviceName標識SessionLength最大值,並將結果存儲在新的數據幀df2

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

然后,我們可以獲取此數據幀的子集,僅選擇SessionLength值低於特定限制的那些設備。 在這里,我將限制設置為10000,因為在OP中提供了示例數據,限制為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)

請參考子集和訂購功能。

# 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM