0

我有愚蠢的问题要问。我正在尝试将两列与因素结合起来,使其成为一列。

级别(0 和 1)就像 no 和 yes。

因此,如果我将 1 和 1 结合起来,它应该给我 1;0 和 1 作为 1 等等...

感谢您提供任何信息...壁画

> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

> head(testmerge$glucosystemic,10)
 [1] 0 0 0 0 0 0 0 0 0 0
Levels: 0 1 glucosystemic
> head(testmerge$glucolocal,10)
 [1] 0 0 0 0 0 1 1 0 0 1
Levels: 0 1 glucolocal
> str(testmerge$glucosystemic)
 Factor w/ 3 levels "0","1","glucosystemic": 1 1 1 1 1 1 1 1 1 1 ...
> str(testmerge$glucolocal)
 Factor w/ 3 levels "0","1","glucolocal": 1 1 1 1 1 2 2 1 1 2 ...

这解决了这个问题

### from stackflow help
glucomerge <- function(vec1, vec2) {as.numeric(as.numeric(vec1) + as.numeric(vec2) > 2)}
testmerge$glucoco <- glucomerge(testmerge$glucosystemic,testmerge$glucolocal)

谢谢

4

3 回答 3

1

只需使用以下内容:

as.numeric(as.numeric(vec1) + as.numeric(vec2) > 2)

您可以将其包装在一个不错的函数中,您只需在其中运行:

 FactorOR(testmerge[, c("glucosystemic", "glucolocal")])
 #  [1] 0 0 0 0 0 1 1 0 0 1


# Where the function is defined as: 
FactorOR <- function(TwoColDF) {
    as.numeric(as.numeric(TwoColDF[,1]) + as.numeric(TwoColDF[,2]) > 2)
} 
于 2013-08-03T16:42:21.820 回答
1

或者:

x3 <- ifelse(x1 == 1 | x2 == 1, 1, 0)
于 2013-08-03T16:47:37.437 回答
0

假设您的数据是 testmerge,您可以使用interaction它。

testmerge$col<-with(testmerge, interaction (glucosystemic,glucolocal))

更新:您可以使用 as.numeric 来分配级别。

testmerge$col<-with(testmerge, as.numeric(interaction (glucosystemic,glucolocal)))
于 2013-08-03T16:28:21.713 回答