R 如何替换数据中的行
你好,我有一张5列的桌子。X列中的一列是: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中创建另一列,并按所需顺序分配值
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,3user45415631
。我不确定我是否理解。您希望结果是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