【问题标题】:Moving certain elements of data frame into new columns (in R)将数据框的某些元素移动到新列中(在 R 中)
【发布时间】:2014-03-07 10:49:30
【问题描述】:

我在 R 中有一个如下所示的数据框:

jiz <- data.frame(Type=c("X","B","B","B","B","X","B"),
                  Action=c("both","1","2","2","1","both","1"))

Type 是 X 或 B,Action 决定应该对 Type 中的变量采取什么类型的操作(操作 1 或 2)。如果 type 为“X”,则始终执行两个操作,如果 type 为“B”,则执行操作 1 操作 2。

现在我们添加两列:

jiz[c("1","2")]<-NA

现在,我希望“X”进入两个新列,因为两个操作都已执行,而“B”进入任一新列 - 取决于所采取的操作,这样任何 R 代码都会生成这个新的数据框:

jiz.new <- data.frame(Type=c("X","B","B","B","B","X","B"),
                      Action=c("both","1","2","2","1","both","1"),
                      "1"=c("X","B",0,0,"B","X","B"),
                      "2"=c("X",0,"B","B",0,"X",0))

请注意,如果“B”具有操作 2 - B 被放入新列“2” - 并且 0 被放入新列“1”。

【问题讨论】:

    标签: r


    【解决方案1】:

    这是一种方法:

    transform(jiz, "1" = ifelse(Action != "2", as.character(Type), "0"),
                   "2" = ifelse(Action != "1", as.character(Type), "0"))
    
      Type Action X1 X2
    1    X   both  X  X
    2    B      1  B  0
    3    B      2  0  B
    4    B      2  0  B
    5    B      1  B  0
    6    X   both  X  X
    7    B      1  B  0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-15
      • 2014-12-12
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2016-02-23
      相关资源
      最近更新 更多