在dataframe的每一列中删除相同的值,并指定这些值在给定列中的位置
第一: 我需要一些关于如何最快完成的提示,因为我想多次将其应用于包含大量行的数据帧。 我想删除dataframe的每一列中的相同值。 数据帧的每一列都是给定因子的排列,不需要替换 例如,我从每列中删除值“1”:在dataframe的每一列中删除相同的值,并指定这些值在给定列中的位置,r,dataframe,dplyr,cbind,R,Dataframe,Dplyr,Cbind,第一: 我需要一些关于如何最快完成的提示,因为我想多次将其应用于包含大量行的数据帧。 我想删除dataframe的每一列中的相同值。 数据帧的每一列都是给定因子的排列,不需要替换 例如,我从每列中删除值“1”: column<-1:20 cbind(sample(column)) data <- matrix(column , length(column) , 5) data<-apply(data,2, sample) for (n in 1:length(data[1, ]
column<-1:20
cbind(sample(column))
data <- matrix(column , length(column) , 5)
data<-apply(data,2, sample)
for (n in 1:length(data[1, ])) {
data[, n]<-c(data[-which(data[,n]==1), n], 1)
}
data <- data[-length(data[,1]),]
专栏第一部分
您可以按列执行apply
apply(data, 2, function(x) x[-which(x == 1)])
# [,1] [,2] [,3] [,4] [,5]
# [1,] 13 12 5 3 19
# [2,] 8 20 8 17 20
# [3,] 17 4 11 10 2
# [4,] 20 2 13 16 4
# [5,] 4 16 12 4 10
# [6,] 14 8 19 20 7
# [7,] 9 9 3 15 8
# [8,] 5 10 2 14 15
# [9,] 3 13 15 5 12
#[10,] 15 6 16 9 18
#[11,] 12 15 10 6 11
#[12,] 11 3 7 12 13
#[13,] 2 5 17 19 16
#[14,] 6 7 9 18 6
#[15,] 16 17 6 11 17
#[16,] 10 14 18 7 14
#[17,] 18 11 20 8 9
#[18,] 19 19 4 2 3
#[19,] 7 18 14 13 5
第二部分
我们确认第1列中的第一项(=13
)与第2列中的第10项匹配,与第3列中的第4项匹配,依此类推
样本数据
set.seed(2017年)
专栏第一部分
您可以按列执行apply
apply(data, 2, function(x) x[-which(x == 1)])
# [,1] [,2] [,3] [,4] [,5]
# [1,] 13 12 5 3 19
# [2,] 8 20 8 17 20
# [3,] 17 4 11 10 2
# [4,] 20 2 13 16 4
# [5,] 4 16 12 4 10
# [6,] 14 8 19 20 7
# [7,] 9 9 3 15 8
# [8,] 5 10 2 14 15
# [9,] 3 13 15 5 12
#[10,] 15 6 16 9 18
#[11,] 12 15 10 6 11
#[12,] 11 3 7 12 13
#[13,] 2 5 17 19 16
#[14,] 6 7 9 18 6
#[15,] 16 17 6 11 17
#[16,] 10 14 18 7 14
#[17,] 18 11 20 8 9
#[18,] 19 19 4 2 3
#[19,] 7 18 14 13 5
第二部分
我们确认第1列中的第一项(=13
)与第2列中的第10项匹配,与第3列中的第4项匹配,依此类推
样本数据
set.seed(2017年)
列矢量化函数:
structure(data[data!=1],.Dim=dim(data)-c(1,0))
为了能够匹配,我们可以使用:
data1 = matrix(data[,1],nrow(data),ncol(data))
array(pmatch(data1,data),dim(data))-(col(data)-1)*nrow(data)
矢量化函数:
structure(data[data!=1],.Dim=dim(data)-c(1,0))
为了能够匹配,我们可以使用:
data1 = matrix(data[,1],nrow(data),ncol(data))
array(pmatch(data1,data),dim(data))-(col(data)-1)*nrow(data)
例如,我从每一列中删除值“1”,但你不会得到不同长度的“列”吗?在这种情况下,您需要将输出存储在列表中。还是我误解了?也许您可以为一些样本数据添加预期输出(使用固定的随机种子进行再现)。最后,每一列的长度将相同,因为正如我所说的,数据帧的每一列都是给定因子的置换,无需替换。顺便说一句,如果你有一些列表的快速解决方案,请在这里给出;谢谢你的澄清。我在下面使用apply
添加了一个答案。请看一看。指定相对于第一列的位置是什么意思?通过您给出的示例,您可以指定位置吗??“例如,我从每列中删除值“1”,但您不会以不同长度的“列”结束吗?在这种情况下,您需要将输出存储在列表中。还是我误解了?也许您可以为一些样本数据添加预期输出(使用固定的随机种子进行再现)。最后,每一列的长度将相同,因为正如我所说的,数据帧的每一列都是给定因子的置换,无需替换。顺便说一句,如果你有一些列表的快速解决方案,请在这里给出;谢谢你的澄清。我在下面使用apply
添加了一个答案。请看一看。指定与第一个位置相关的位置是什么意思?根据您给出的示例,您可以指定位置吗??