按字符名称排序data.frame

时间:2015-09-15 11:14:09

标签: r dataframe

我有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的{​​{1}}。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我们可以使用aggregate()函数与max()相结合来确定每个SessionLength的{​​{1}}的最大值,并将结果存储在新的数据框{{1}中}}:

DeviceName

然后我们可以获取此数据框的子集,仅选择值低于特定限制df2的设备。在这里,我将限制设置为10000,因为在OP中给出的样本数据限制为200将导致空向量:

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

结果仅包含SessionLength值的所有条目均小于10000的设备名称。

数据

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

答案 1 :(得分: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