更改R列

时间:2017-03-21 19:03:23

标签: r

我有一个类似下面子集的数据集

    col1   col2   col3
     y      
            y
     y      y
                   y
            y
     y

实际上,我的数据集描述了药物过量。有一个" y"在他们去世时每个人系统中的药物专栏中。我想要做的就是改变" y"到相应的列。 例如,我希望上面的示例数据集显示为

    col1   col2   col3
    col1      
           col2
    col1   col2
                  col3
           col2
    col1

这样我以后可以将这三列结合起来,以了解每个人的死亡情况,但只能查看一列。 数据集被称为" Data1",所以我知道我需要在某个时候放

    Data1$col1
    Data1$col2
    Data1$col3

有人请帮忙..我是非常新的。

4 个答案:

答案 0 :(得分:2)

如果您为患者ID添加了一列,则可以使用data.table melt函数重新格式化为长格式:

df <- data.frame(id = 1:6, col1 = c("y", NA, "y", NA, NA, "y"),
                 col2 = c(NA, "y", "y", NA, "y", NA),
                 col3 = c(NA, NA, NA, "y", NA, NA))

df1 <- melt(setDT(df), id.vars = "id", measure.vars = c("col1", "col2", "col3"))
df1 <- df1[order(id)][is.na(value) == FALSE]

然后会给你这个:

> df1
   id variable value
1:  1     col1     y
2:  2     col2     y
3:  3     col1     y
4:  3     col2     y
5:  4     col3     y
6:  5     col2     y
7:  6     col1     y

答案 1 :(得分:1)

在列中,您可以检查值的位置,并获取下一个用于索引所述列的逻辑向量。在我们的案例中:

Data1$col1 == "y"

会给你一个像

这样的矢量
## [1] TRUE FALSE TRUE FALSE FALSE TRUE

您可以使用它来访问列中的&#34; y&#34;

Data1$col1[Data1$col1 == "y"]
## [1] "y" "y" "y"

它只会在有#34; y&#34;的情况下读出列的条目,在这种情况下有点无聊,但通常非常有用,例如当您使用一列中的值来操纵另一列时。上面的行也是双向的:你可以读出值(如上所述),我们可以使用赋值运算符为指定的条目分配一个新值:

Data1$col1[Data1$col1 == "y"] = "col1"

然后,您可以重复每列的代码并完成。

答案 2 :(得分:1)

我能够弄清楚:

    Data1$Col1 <- as.character(Data1$Col1)
    Data1$Col1[Data1$Col1 %in% "y"] <- "Col1"

感谢您的帮助!

答案 3 :(得分:1)

已有一些明智的答案,但我仍然在这里写下我的解决方案,包括列循环:

        int k = 90;

        do
        {
            k = k - 1;
        } while (k == 5);


        Console.WriteLine(k);

注意:df <- data.frame(col1 = c("y", NA, "y", NA, NA, "y"), col2 = c(NA, "y", "y", NA, "y", NA), col3 = c(NA, NA, NA, "y", NA, NA), stringsAsFactors=FALSE) 很重要!

stringAsFactors=FALSE

然后,你会得到你想要的东西:

for (name in colnames(df)){
  df[name][df[name]=="y"] = name
}