Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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
在dataframe的每一列中删除相同的值,并指定这些值在给定列中的位置_R_Dataframe_Dplyr_Cbind - Fatal编程技术网

在dataframe的每一列中删除相同的值,并指定这些值在给定列中的位置

在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, ]

第一: 我需要一些关于如何最快完成的提示,因为我想多次将其应用于包含大量行的数据帧。 我想删除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, ])) {
  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
添加了一个答案。请看一看。指定与第一个位置相关的位置是什么意思?根据您给出的示例,您可以指定位置吗??