将“数据帧”列转换为1或0;“真的”/&引用;假;值并分配给dataframe
在R cli中,我可以对数据帧中的字符列执行以下操作:将“数据帧”列转换为1或0;“真的”/&引用;假;值并分配给dataframe,r,type-conversion,R,Type Conversion,在R cli中,我可以对数据帧中的字符列执行以下操作: > data.frame$column.name [data.frame$column.name == "true"] <- 1 > data.frame$column.name [data.frame$column.name == "false"] <- 0 > data.frame$column.name <- as.integer(data.frame$column.name) >data.fra
> data.frame$column.name [data.frame$column.name == "true"] <- 1
> data.frame$column.name [data.frame$column.name == "false"] <- 0
> data.frame$column.name <- as.integer(data.frame$column.name)
>data.frame$column.name[data.frame$column.name==“true”]data.frame$column.name[data.frame$column.name==“false”]data.frame$column.name你能试试if.else吗
> col2=ifelse(df1$col=="true",1,0)
> df1
$col
[1] "true" "false"
> cbind(df1$col)
[,1]
[1,] "true"
[2,] "false"
> cbind(df1$col,col2)
col2
[1,] "true" "1"
[2,] "false" "0"
由于您处理的是假定为布尔值的值,因此只需使用=
并将逻辑响应转换为as.integer
:
df <- data.frame(col = c("true", "true", "false"))
df
# col
# 1 true
# 2 true
# 3 false
df$col <- as.integer(df$col == "true")
df
# col
# 1 1
# 2 1
# 3 0
df@chappers解决方案(在注释中)作为.integer(as.logical(data.frame$column.name))工作
data.frame$column.name.num <- as.numeric(data.frame$column.name)
data.frame$column.name.num即使您最后提出相反的要求,要将0和1转换为真和假,但是,我给出了一个关于如何在一行中将整个数据帧的假和真转换为1和0(1和0)的答案
举例说明
df <- structure(list(p1_1 = c(TRUE, FALSE, FALSE, NA, TRUE, FALSE,
NA), p1_2 = c(FALSE, TRUE, FALSE, NA, FALSE, NA,
TRUE), p1_3 = c(TRUE,
TRUE, FALSE, NA, NA, FALSE, TRUE), p1_4 = c(FALSE, NA,
FALSE, FALSE, TRUE, FALSE, NA), p1_5 = c(TRUE, NA,
FALSE, TRUE, FALSE, NA, TRUE), p1_6 = c(TRUE, NA,
FALSE, TRUE, FALSE, NA, TRUE), p1_7 = c(TRUE, NA,
FALSE, TRUE, NA, FALSE, TRUE), p1_8 = c(FALSE,
FALSE, NA, FALSE, TRUE, FALSE, NA), p1_9 = c(TRUE,
FALSE, NA, FALSE, FALSE, NA, TRUE), p1_10 = c(TRUE,
FALSE, NA, FALSE, FALSE, NA, TRUE), p1_11 = c(FALSE,
FALSE, NA, FALSE, NA, FALSE, TRUE)), .Names =
c("p1_1", "p1_2", "p1_3", "p1_4", "p1_5", "p1_6",
"p1_7", "p1_8", "p1_9", "p1_10", "p1_11"), row.names =
c(NA, -7L), class = "data.frame")
p1_1 p1_2 p1_3 p1_4 p1_5 p1_6 p1_7 p1_8 p1_9 p1_10 p1_11
1 TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE
2 FALSE TRUE TRUE NA NA NA NA FALSE FALSE FALSE FALSE
3 FALSE FALSE FALSE FALSE FALSE FALSE FALSE NA NA NA NA
4 NA NA NA FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
5 TRUE FALSE NA TRUE FALSE FALSE NA TRUE FALSE FALSE NA
6 FALSE NA FALSE FALSE NA NA FALSE FALSE NA NA FALSE
7 NA TRUE TRUE NA TRUE TRUE TRUE NA TRUE TRUE TRUE
我不知道在所有不同的条件下它是否是一个总的“安全”命令/dfs。我认为您可以只运行as.numeric(data.frame$column.name)
自动将布尔值转换为1,0,如果它是一个字符串,这仍然可以,我们将as.numeric(data.frame$column.name==“true”)
也可以。我确实说过,如果列名是布尔变量…@chappers,但它不是。另一个注意事项是……如果您的变量实际上是“真”、“假”而不是任意字符,您可以调用as.integer(as.logical(data.frame$column.name))
我喜欢这个解决方案,因为它可以很好地处理异常,例如as.integer(as.logical(c(“true”、“false”、“blah”))
返回[1]10 NA
这个问题措辞糟糕,我在这里寻找的是相反的结果,因此,如果其他人正在寻找将0和1列转换为逻辑列的方法:dataFrame$columnName=as.logical(dataFrame$columnName)
我非常喜欢这个解决方案
data.frame$column.name.num.factor <- as .factor(data.frame$column.name.num)
df <- structure(list(p1_1 = c(TRUE, FALSE, FALSE, NA, TRUE, FALSE,
NA), p1_2 = c(FALSE, TRUE, FALSE, NA, FALSE, NA,
TRUE), p1_3 = c(TRUE,
TRUE, FALSE, NA, NA, FALSE, TRUE), p1_4 = c(FALSE, NA,
FALSE, FALSE, TRUE, FALSE, NA), p1_5 = c(TRUE, NA,
FALSE, TRUE, FALSE, NA, TRUE), p1_6 = c(TRUE, NA,
FALSE, TRUE, FALSE, NA, TRUE), p1_7 = c(TRUE, NA,
FALSE, TRUE, NA, FALSE, TRUE), p1_8 = c(FALSE,
FALSE, NA, FALSE, TRUE, FALSE, NA), p1_9 = c(TRUE,
FALSE, NA, FALSE, FALSE, NA, TRUE), p1_10 = c(TRUE,
FALSE, NA, FALSE, FALSE, NA, TRUE), p1_11 = c(FALSE,
FALSE, NA, FALSE, NA, FALSE, TRUE)), .Names =
c("p1_1", "p1_2", "p1_3", "p1_4", "p1_5", "p1_6",
"p1_7", "p1_8", "p1_9", "p1_10", "p1_11"), row.names =
c(NA, -7L), class = "data.frame")
p1_1 p1_2 p1_3 p1_4 p1_5 p1_6 p1_7 p1_8 p1_9 p1_10 p1_11
1 TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE
2 FALSE TRUE TRUE NA NA NA NA FALSE FALSE FALSE FALSE
3 FALSE FALSE FALSE FALSE FALSE FALSE FALSE NA NA NA NA
4 NA NA NA FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
5 TRUE FALSE NA TRUE FALSE FALSE NA TRUE FALSE FALSE NA
6 FALSE NA FALSE FALSE NA NA FALSE FALSE NA NA FALSE
7 NA TRUE TRUE NA TRUE TRUE TRUE NA TRUE TRUE TRUE
> df*1
p1_1 p1_2 p1_3 p1_4 p1_5 p1_6 p1_7 p1_8 p1_9 p1_10 p1_11
1 1 0 1 0 1 1 1 0 1 1 0
2 0 1 1 NA NA NA NA 0 0 0 0
3 0 0 0 0 0 0 0 NA NA NA NA
4 NA NA NA 0 1 1 1 0 0 0 0
5 1 0 NA 1 0 0 NA 1 0 0 NA
6 0 NA 0 0 NA NA 0 0 NA NA 0
7 NA 1 1 NA 1 1 1 NA 1 1 1