R排序数据子集
我正在学习使用R(版本3.1.2),所以这可能是一个noob问题,但我在排序数据帧的子集时遇到了问题。如果我使用R排序数据子集,r,sorting,dataframe,subset,R,Sorting,Dataframe,Subset,我正在学习使用R(版本3.1.2),所以这可能是一个noob问题,但我在排序数据帧的子集时遇到了问题。如果我使用attach(mtcars)使用mtcars数据框,我可以使用ord.cars轻松订购,这是一个与您使用attach()相关的问题,在R中不推荐使用该功能-正是出于这个原因!问题是,您的代码有点模棱两可,或者至少,它与您预期的不同 如何解决这个问题 分离数据集和 不要再次使用attach。相反,使用[和/或$,如果您喜欢with()来对数据进行子集划分 以下是您可以如何执行此操作的示例
attach(mtcars)
使用mtcars数据框,我可以使用ord.cars轻松订购,这是一个与您使用attach()
相关的问题,在R中不推荐使用该功能-正是出于这个原因!问题是,您的代码有点模棱两可,或者至少,它与您预期的不同
如何解决这个问题
分离数据集和
不要再次使用attach
。相反,使用[
和/或$
,如果您喜欢with()
来对数据进行子集划分
以下是您可以如何执行此操作的示例:
detach(mtcars)
ord.cars <- mtcars[order(mtcars$hp),]
sub.cars <- subset(mtcars, hp > 120)
#the subset could also be written as:
sub.cars <- mtcars[mtcars$hp > 120,]
ord.sub <- sub.cars[order(sub.cars$mpg),]
head(ord.sub) # only show the first 6 rows
mpg cyl disp hp drat wt qsec vs am gear carb
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25 18.0 0 0 3 4
Lincoln Continental 10.4 8 460 215 3.00 5.42 17.8 0 0 3 4
Camaro Z28 13.3 8 350 245 3.73 3.84 15.4 0 0 3 4
Duster 360 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.34 17.4 0 0 3 4
Maserati Bora 15.0 8 301 335 3.54 3.57 14.6 0 1 5 8
分离(mtcars)
ord.cars我猜这是一个与您使用R中不推荐的attach()
有关的问题。请尝试以下操作:分离数据集,然后使用[
和/或$
,如果您喜欢with()
对数据子集:分离(mtcars);ord.cars@初学者请将其作为答案发布。收到,@Thomas:)这也可能是一个示例,您可以查看:seq(1,nrow(sub.cars))[order(mpg)]
order(mpg)
包括sub.cars
中不可用的行索引,因此这些行仅用NA
值填充。非常感谢您的时间和耐心!
detach(mtcars)
ord.cars <- mtcars[order(mtcars$hp),]
sub.cars <- subset(mtcars, hp > 120)
#the subset could also be written as:
sub.cars <- mtcars[mtcars$hp > 120,]
ord.sub <- sub.cars[order(sub.cars$mpg),]
head(ord.sub) # only show the first 6 rows
mpg cyl disp hp drat wt qsec vs am gear carb
Cadillac Fleetwood 10.4 8 472 205 2.93 5.25 18.0 0 0 3 4
Lincoln Continental 10.4 8 460 215 3.00 5.42 17.8 0 0 3 4
Camaro Z28 13.3 8 350 245 3.73 3.84 15.4 0 0 3 4
Duster 360 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.34 17.4 0 0 3 4
Maserati Bora 15.0 8 301 335 3.54 3.57 14.6 0 1 5 8