【问题标题】:new column that repeats number for specific rows R为特定行重复编号的新列 R
【发布时间】:2020-05-18 09:09:57
【问题描述】:

我有一个 data.frame,我想为特定行添加一个重复 1 的新列。

b <- data.frame(var1 = c(9.2, 3.5,5.5,8,3), var2 = 1:5,row.names = c("a","b","c","d","e"))
b$new_col <- rep("1",b[1:3,])

Error in rep("1", b[1:3, ]) : invalid 'times' argument

我希望 b 看起来像这样

 var1 var2 new_col
a  9.2    1       1
b  3.5    2       1
c  5.5    3       1
d  8.0    4       0
e  3.0    5       0

我该怎么做?

编辑:在我真正的问题中。我想在特定行中添加几列 1。就这样

 var1 var2 new_col new_col2
a  9.2    1       1        0
b  3.5    2       1        0
c  5.5    3       1        0
d  8.0    4       0        1
e  3.0    5       0        1
f  2.0    6       0        0
g  3.0    7       0        0
h  5.0    8       0        0

【问题讨论】:

  • 加1的条件是什么?
  • 我想标记特定的行。新列是标签,行应该在这个组或标签中。哪些行在哪个标签中是人为的决定。

标签: r dataframe


【解决方案1】:

您可以使用%in% 比较来自seq_len(nrow(b) 的行以在特定行中给出1

b$new_col <- +(seq_len(nrow(b)) %in% 1:3)
b$new_col2 <- +(seq_len(nrow(b)) %in% 4:5)
#b
#  var1 var2 new_col new_col2
#a  9.2    1       1        0
#b  3.5    2       1        0
#c  5.5    3       1        0
#d  8.0    4       0        1
#e  3.0    5       0        1

【讨论】:

    【解决方案2】:

    你可以这样做:

    b$new_col <- as.numeric(1:nrow(b) < 4)
    
      var1 var2 new_col
    a  9.2    1       1
    b  3.5    2       1
    c  5.5    3       1
    d  8.0    4       0
    e  3.0    5       0
    

    【讨论】:

      【解决方案3】:

      为了透明度,我可能会添加一个明确的行号列并使用它来选择行。例如:

      b <- data.frame(var1 = c(9.2, 3.5,5.5,8,3), var2 = 1:5,row.names = c("a","b","c","d","e"))
      b$row_num <- 1:nrow(b)
      
      rows_to_choose <- 1:3
      b$new_col <- ifelse(b$row_num %in% rows_to_choose, 1, 0)
      
        var1 var2 row_num new_col
      a  9.2    1       1       1
      b  3.5    2       2       1
      c  5.5    3       3       1
      d  8.0    4       4       0
      e  3.0    5       5       0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 2020-03-28
        相关资源
        最近更新 更多