在r中获得组合百分比

时间:2016-10-10 16:24:37

标签: r

R相对较新,在stackoverflow中非常新。

我正在尝试从显微镜分析.csv输出文件。

输出将告诉我图像上的每个单元格是“正”(用1表示)还是“负数”(用0表示)

my_data <- data.frame(cell = 1:4, marker_a = c(1, 0, 0, 0), marker_b = c(0,1,1,1), marker_c = c(0,1,1,0))

有时我们测量4个标记,有时更多。

我已经写了一些东西,它给了我一个带有“使用过的标记”的向量,并丢弃了“未使用的标记”(在这种情况下,它将是标记e,f,g,它也出现在.csv文件中)。 / p>

我想自动获取单元格可以采用的所有可能组合。

所有标记的单元格可以为0,marker_a可以为正数,marker_bmarker_cmarker_d为负数。

我的最终目标是量化属于每个类别/组合的所有细胞。

我想要一个向所有带有0值的标记命名每个可能组合的向量,并且它们都是1值。

到目前为止,我一直在做的是手动生成组合。

no_marker <- my_data$marker_a == 0 & my_data$marker_b == 0 & my_data$marker_c == 0 a_positive <- my_data$marker_a == 1 & my_data$marker_b == 0 & my_data$marker_c == 0...

然后我可以创建一个data.frame以便稍后添加更多样本。

cell_phenotypes <- c("no_marker", "a_positive", "ab_positive", "abc_positive", "abcd_positive", "b_ positive", "bc_positive"...)

我只是不想每次都手动创建矢量。

1 个答案:

答案 0 :(得分:1)

听起来你想要expand.grid

expand.grid(
    marker_a = c(0, 1), 
    marker_b = c(0, 1), 
    marker_c = c(0, 1), 
    marker_d = c(0, 1)
)

#>    marker_a marker_b marker_c marker_d
#> 1         0        0        0        0
#> 2         1        0        0        0
#> 3         0        1        0        0
#> 4         1        1        0        0
#> 5         0        0        1        0
#> 6         1        0        1        0
#> 7         0        1        1        0
#> 8         1        1        1        0
#> 9         0        0        0        1
#> 10        1        0        0        1
#> 11        0        1        0        1
#> 12        1        1        0        1
#> 13        0        0        1        1
#> 14        1        0        1        1
#> 15        0        1        1        1
#> 16        1        1        1        1

注意16是正确的数字;你可以查看2**4 = 16