R 如何替换数据中的行

R 如何替换数据中的行,r,aggregate,apply,R,Aggregate,Apply,你好,我有一张5列的桌子。X列中的一列是: x <- c(1,1,1,1,1,1,2,2,2,3) 例如,如果我们把X=1改为X=2,我们应该把X=1的所有行都改为X=2 我有两个向量: x <- c(1,1,1,1,1,1,2,2,2,3) z <- c(10,10,10,10,10,10,20,20,20,30) 如果我理解正确,听起来好像你想定义你自己的排序顺序。是这样吗?有两种方法可以做到这一点: 选项#1:在data.frame中创建另一列,并按所需顺序分配值

你好,我有一张5列的桌子。X列中的一列是:

x <- c(1,1,1,1,1,1,2,2,2,3)
例如,如果我们把X=1改为X=2,我们应该把X=1的所有行都改为X=2

我有两个向量:

 x <- c(1,1,1,1,1,1,2,2,2,3)
 z <- c(10,10,10,10,10,10,20,20,20,30)

如果我理解正确,听起来好像你想定义你自己的排序顺序。是这样吗?有两种方法可以做到这一点:

选项#1:在data.frame中创建另一列,并按所需顺序分配值。如果你想让三个位列第一,一个位列第二,两个位列第三,你可以这样做:

 Data$y <- rep(NA, nrow(Data)
 Data$y[Data$x == 3] <- 1
 Data$y[Data$x == 1] <- 2
 Data$y[Data$x == 2] <- 3
Data$y您可以

 x1 <-c(2,3,1)[x]
 x[order(x1)]
 # [1] 3 1 1 1 1 1 1 2 2 2
更新 如果你有很多列

 x <- c(1,1,1,1,1,1,2,2,2,3)
 z <- c(10,10,10,10,10,10,20,20,20,30)
 set.seed(14)
 y <- matrix(sample(25,10*3,replace=TRUE),ncol=3)
 m1 <- as.data.frame(cbind(x,z,y))
 x1 <- c(2,3,1)[m1$x]
 x1
 # [1] 2 2 2 2 2 2 3 3 3 1


 res <- cbind(x=c(2,3,1)[m1$x[order(x1)]],subset(m1[order(x1),], select=-x))
 res
 #   x  z V3 V4 V5
 #10 1 30 10 15  2
 #1  2 10  7 23  9
 #2  2 10 16  5 11
 #3  2 10 24 12 16
 #4  2 10 14 22 18
 #5  2 10 25 22 19
 #6  2 10 13 19 16
 #7  3 20 24  9 10
 #8  3 20 11 17 14
 #9  3 20 13 22 18

x不清楚你在问什么。请提供完整数据集和所需结果的样本。@RichardScriven已编辑!@RichardScriven的可能副本它不是副本,因为我要求不要将订单更改为ASC或DESC@user45415631.  您的更新版本显示了与以前完全相同的想法,但预期结果不同。X=1,设为X=2,X=2,设为X=3,如果X=3,设为X=1。使用我的代码。x[1]1,2,2,3;x1[1]2 2 2 3 3 1只是按照你的要求去做。另外,z[order(x1)]#[1]301020,但是所需输出中的
x
不清楚。谢谢!如果我更改了X列中的顺序,表中的所有其他行都会更改顺序吗。例如,如果我们将3改为1,我需要x=3时的所有行也转到1处。在版本IYes中,Y是什么,如果对data.frame中的一列进行排序,R将自动对所有其他列进行排序。版本1中的“Y”是data.frame中可以排序的新列。一旦您创建了新的列y,您就可以这样排序:
Data好的,谢谢!在您的版本中,您只需更改行的顺序。但我的意思是:X中的数字3需要更改为数字1,数字1更改为数字2,数字2更改为数字3以及所有行。输出:result=(1,2,2,2,2,2,3,3,3)。抱歉,如果第一次不清楚)谢谢!表中的所有其他行是否随X一起更改顺序?。例如,如果我们将3改为1,我需要x=3时的所有行也转到结果中的位置1,您有3 1 2。所以我们有了一个新的顺序,我需要更改计数:1,2,2,2,2,2,3,3
user45415631
。我不确定我是否理解。您希望结果是
3 1 2 2
,对吗?。请给出一个例子和您想要的预期结果。x
用户45415631
。我刚刚更新了代码。请检查这是否是您想要的。谢谢,这正是我需要的!但如果我的表(data.frame)有X列和许多其他列(如Z),我该怎么办呢?
 Data$y <- rep(NA, nrow(Data)
 Data$y[Data$x == 3] <- 1
 Data$y[Data$x == 1] <- 2
 Data$y[Data$x == 2] <- 3
 library(plyr)
 Data$x <- revalue(Data$x, c("3" = "1", "1" = "2", "2" = "3"))
 x1 <-c(2,3,1)[x]
 x[order(x1)]
 # [1] 3 1 1 1 1 1 1 2 2 2
  x[order(chartr(old="123",new="231",x))]
  #[1] 3 1 1 1 1 1 1 2 2 2
 x <- c(1,1,1,1,1,1,2,2,2,3)
 z <- c(10,10,10,10,10,10,20,20,20,30)
 set.seed(14)
 y <- matrix(sample(25,10*3,replace=TRUE),ncol=3)
 m1 <- as.data.frame(cbind(x,z,y))
 x1 <- c(2,3,1)[m1$x]
 x1
 # [1] 2 2 2 2 2 2 3 3 3 1


 res <- cbind(x=c(2,3,1)[m1$x[order(x1)]],subset(m1[order(x1),], select=-x))
 res
 #   x  z V3 V4 V5
 #10 1 30 10 15  2
 #1  2 10  7 23  9
 #2  2 10 16  5 11
 #3  2 10 24 12 16
 #4  2 10 14 22 18
 #5  2 10 25 22 19
 #6  2 10 13 19 16
 #7  3 20 24  9 10
 #8  3 20 11 17 14
 #9  3 20 13 22 18