我有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}}。有什么想法吗?
答案 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