R' duplicated
返回一个向量,显示向量或数据帧的每个元素是否是具有较小下标的元素的副本.因此,如果5行数据帧的第3行,第4行和第5行相同,duplicated
则会给出向量
FALSE, FALSE, FALSE, TRUE, TRUE
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我真的想得到
FALSE, FALSE, TRUE, TRUE, TRUE
Run Code Online (Sandbox Code Playgroud)
也就是说,我想知道一行是否与具有更大下标的行重复.
R中复制的函数执行重复行搜索.如果我们想要删除重复项,我们只需要编写df[!duplicated(df),]
,重复项将从数据框中删除.
但是如何找到重复数据的索引呢?如果duplicated
在某行上返回TRUE,则意味着这是数据帧中第二次出现这样的行,并且可以很容易地获得其索引.如何获得该行首次出现的索引?或者,换句话说,重复行与之相同的索引?
我可以在data.frame上做一个循环,但我认为这个问题有一个更优雅的答案.
我使用以下命令从R导出数据:
write.table(output,file="data.raw", na "-9999",sep="\t",row.names=F,col.names=F)
Run Code Online (Sandbox Code Playgroud)
正确导出我的数据,但它将所有逻辑变量导出为TRUE和FALSE.
我需要将数据读入另一个只能处理数值的程序.有没有一种有效的方法在导出期间将这些转换为数字1和0?我有大量的数字变量,所以我希望自动遍历data.table中的所有变量
我意识到我可以在输出数据上运行简单的sed脚本,但看起来这应该是从R直接做的.
或者,我的输出对象是data.table.有没有一种有效的方法将data.table中的所有逻辑变量转换为数字变量?
如果它有用,这里有一些代码来生成一个带有逻辑变量的data.table(它不是大量的逻辑变量,但足以在示例代码上使用):
DT = data.table(cbind(1:100,rnorm(100)>0)
DT[ ,V3:= V2==1 ]
DT[ ,V4:= V2!=1 ]
Run Code Online (Sandbox Code Playgroud)
这似乎是一个简单的问题,但它让我失望,所以谢谢你的帮助!
我正在尝试识别在矩阵中表示两次或更多次的所有行.
例如:
m <- matrix(c(1,2,1,3,1,4,1,2,2,3,2,3,1,2,5), ncol = 3)
m
duplicated(m[,1])
Run Code Online (Sandbox Code Playgroud)
输出:
[,1] [,2] [,3]
[1,] 1 4 2
[2,] 2 1 3
[3,] 1 2 1
[4,] 3 2 2
[5,] 1 3 5
[1] FALSE FALSE TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
但是,我不想要那个输出.我想要:
[1] TRUE FALSE TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
因为行[1,1]的值在m的第1列中出现3次.
a <- c(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)
条件a> 2,我想要一个向量b =(0,0,1,1).目前我正在使用以下方法.有什么简单的方法吗?
b <- (a > 2)
b[b == TRUE] <- 1
b[b == FALSE] <- 0
Run Code Online (Sandbox Code Playgroud)