【发布时间】:2018-07-20 00:05:05
【问题描述】:
第一: 我需要一些提示如何最快地做到这一点,因为我想将它多次应用于具有很多行的数据框。 我想在数据框的每一列中删除相同的值。 数据帧的每一列都是给定因子的排列,无需替换。
例如,我从每一列中删除值“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]),]
第二: 我想指定给定列中的值相对于第一列的位置。
pos <- function(data){
Position <- match(data[,1],data[,1])
Position <- as.data.frame(Position)
for (i in 2:length(data[1,])) {
Position <- cbind(Position, match(data[,1],data[,i]))
}
return(Position)
}
如果您有任何更快的建议,请随时在下方提及。
【问题讨论】:
-
“例如,我从每列中删除值“1”” 但是你最终不会得到不同长度的“列”吗?在这种情况下,您需要将输出存储在
list中。还是我误会了?或许您可以为某些样本数据添加预期输出(使用固定随机种子以实现可重复性)。 -
最后每一列的长度都是相同的,因为正如我所说,数据框的每一列都是给定因子的排列,无需替换。顺便说一句,如果您有一些快速的列表解决方案,请在此处提供。
-
啊我明白了;感谢您的澄清。我使用
apply在下面添加了一个答案。请看一看。 -
指定相对于第一个的位置是什么意思??
-
用你给出的例子,你能指定位置吗??