将逻辑值(TRUE / FALSE)替换为数值(1 / 0)

11 浏览
0 Comments

将逻辑值(TRUE / FALSE)替换为数值(1 / 0)

我正在使用以下命令从R中导出数据:

write.table(output, file = "data.raw", na = "-9999", sep = "\t", row.names = FALSE, col.names = FALSE)

它能正确导出我的数据,但是逻辑变量被导出为TRUEFALSE

我需要将数据读入另一个只能处理数值的程序中。在导出时,有没有一种高效的方法将logical列转换为数值1和0?我有大量数值变量,所以希望能够自动循环遍历数据表中的所有变量。

另外,我的输出对象是一个data.table。有没有一种高效的方法将data.table中的所有逻辑变量转换为数值变量?

如果有帮助的话,这里有一些生成一个包含逻辑变量的data.table的代码(不是大量的逻辑变量,但足够用于示例代码):

DT = data.table(cbind(1:100, rnorm(100) > 0))
DT[, V3:= V2 == 1]
DT[, V4:= V2 != 1]

0
0 Comments

问题出现的原因是数据集中的逻辑值(TRUE / FALSE)需要转换为数字值(1 / 0)。解决方法是使用R语言中的data.table库中的set函数,通过循环遍历数据集的每一列,将逻辑值转换为数字值。

代码示例中,首先使用sapply函数和is.logical函数找出数据集中的逻辑值所在的列,将其索引保存在Cols变量中。然后使用setDT函数将数据集转换为data.table对象。接着通过循环遍历Cols中的每一个索引,使用set函数将该列的逻辑值转换为数字值,将转换后的结果存储回原数据集。

这样,就可以将数据集中的逻辑值替换为相应的数字值。

0
0 Comments

问题出现的原因:

在某些情况下,我们需要将逻辑值(TRUE / FALSE)替换为数字值(1 / 0)。这可能是因为我们需要对逻辑值进行数学运算或者将其用于其他需要数字值的操作中。

解决方法:

最简单的方法就是将矩阵与1相乘。具体操作如下:

A <- matrix(c(TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE),ncol=4)

A

# [,1] [,2] [,3] [,4]

# [1,] TRUE TRUE TRUE FALSE

# [2,] FALSE TRUE FALSE TRUE

B <- 1*A

B

# [,1] [,2] [,3] [,4]

# [1,] 1 1 1 0

# [2,] 0 1 0 1

另外,我们也可以使用B <- 0 + A的方式来实现。

不仅这种方法最简单,而且速度也是最快的。

0
0 Comments

问题的出现原因:

在数据分析中,我们经常需要将逻辑值(TRUE / FALSE)转换为数值(1 / 0),以便进行数值计算或其他操作。然而,在R语言中,数据框(data.frame)或数据表(data.table)中的逻辑列默认以逻辑值的形式存储。为了将它们转换为数值,我们需要使用特定的函数来实现。

解决方法:

在数据框中,我们可以使用sapply()函数来判断每一列是否为逻辑列,然后再使用lapply()函数将逻辑列转换为数值列。在数据表中,我们可以使用sapply()函数和get()函数结合来实现相同的操作。

具体代码如下:

对于数据框(data.frame):

# The data
set.seed(144)
dat <- data.frame(V1=1:100,V2=rnorm(100)>0)
dat$V3 <- dat$V2 == 1
head(dat)
# Convert all to numeric
cols <- sapply(dat, is.logical)
dat[,cols] <- lapply(dat[,cols], as.numeric)
head(dat)

对于数据表(data.table):

# Data
set.seed(144)
DT = data.table(cbind(1:100,rnorm(100)>0))
DT[,V3 := V2 == 1]
DT[,V4 := FALSE]
head(DT)
# Converting
(to.replace <- names(which(sapply(DT, is.logical))))
for (var in to.replace) DT[, (var):= as.numeric(get(var))]
head(DT)

通过以上代码,我们可以将逻辑列转换为数值列,方便后续的数据分析和计算。

0