Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按两列重新排列数据帧_R_Dataframe - Fatal编程技术网

R 按两列重新排列数据帧

R 按两列重新排列数据帧,r,dataframe,R,Dataframe,如何通过降低列value中值的顺序排列数据帧,其中列中的值“cat”=X 数据帧 df1<-data.frame(group=rep(c("A", "B", "C", "D"),each=2), cat=rep(c("X", "Y"),4), value=c(1,0.6,1,0.5,1,2,1,5)) df1由于cat'x'的value总是相同的,我们可以按group对值进行求和,然后使用该值对数据进行排序 # Create data.frame df1<-data.frame(g

如何通过降低列
value
中值的顺序排列数据帧,其中列
中的值“cat”=X

数据帧

df1<-data.frame(group=rep(c("A", "B", "C", "D"),each=2), cat=rep(c("X", "Y"),4), value=c(1,0.6,1,0.5,1,2,1,5))

df1由于
cat'x'
value
总是相同的,我们可以按
group
值进行求和,然后使用该值对数据进行排序

# Create data.frame
df1<-data.frame(group=rep(c("A", "B",   "C", "D"),each=2), 
                cat=rep(c("X", "Y"),4), 
                value=c(1,0.6,1,0.5,1,2,1,5))
# Sum values by group (since x is same...)
df2 <- aggregate(df1$value,   by=list(group=df1$group), FUN=sum)

# Join tables
library(plyr)
output <- join(df1, df2, by='group', type='left', match='all')

# Sort
output <- output[with(output, order(-x, cat)),] 

@Pyl dupe中唯一缺失的部分是OP需要重新排列系数
,即
df1$组的级别
# Limit to only cat=Y
df2 <- df1[which(df1$cat=='Y'),]

# Order by descending
df2 <- df2[order(-df2$value),]

# Create a vector based on group column
order_vector <- df2[,'group']

# Use vector from above to designate new factor levels
df1$group <- factor(df1$group, levels = order_vector)

# Sort
output2 <- df1[with(df1, order(group, cat)), ]