根据r中的另一个列级别提取列数据

Extract column data on the basis of another column levels in r

我的数据如下所示:第 1 列是二进制变量,第 2 列是连续变量。

Col1    Col2
0       21
0       34
1       36
0       24
1       96
.       .
.       .
0       25

等等。我希望我的输出在新数据框中,其中第 1 列水平为两个 新的不同列(“0”和“1”)和下面对应的第 2 列值 两个都。这是一个可重现的例子:

set.seed(77)
Col1 <- sample(c(0,1), 50, replace = TRUE)
Col2 <- round(rnorm(50),2)
dat <- data.frame(Col1, Col2)

所以,基本上我的输出应该是这样的:

   "0"    "1"
   21     36
   34     96              
   24     .              
    .     .
    .     .
   25    

试试这个:

dat <- data.frame("0" = data$Col2[data$Col1 == 0],
                  "1" = data$Col2[data$Col1 == 1])
head(dat)

在 R 中执行 t.test。最佳做法是将因子变量 (0/1) 转换为 运行 t.test 之前的因子。该函数假定每一行都是一个单独的人,并且他们属于 Col1 中指定的组。

Col1 <- sample(c(0,1), 50, replace = TRUE)
Col2 <- round(rnorm(50),2)
dat <- data.frame(Col1, Col2)

dat$Col1 <- factor(dat$Col1) 
t.test(Col2 ~ Col1, data = dat)
  df <- data.frame(C1 = c("1","0","0","1","1"), C2 = c(11,21,22,31,35))
  df
  #   C1 C2
  # 1  1 11
  # 2  0 21
  # 3  0 22
  # 4  1 31
  # 5  1 35

 One <- df[df$C1 == "1","C2"]
 Zero <- df[df$C1 == "0","C2"]
 One
 # [1] 11 31 35
 Zero
 # [1] 21 22

 n <- max(length(One),length(Zero))
 n
 # 3

 length(One) <- 3
 length(Zero) <- 3

 Result <- cbind(One,Zero)
 Result
 #      One Zero
 # [1,]  11   21
 # [2,]  31   22
 # [3,]  35   NA