R:ID 列损坏数据框

R: ID column corrupting data frame

我正在使用 R 编程语言。假设我有以下数据框:

a = rnorm(100,10,1)
b = rnorm(100,10,5)
c = rnorm(100,10,10)

my_data_2 = data.frame(a,b,c)

my_data_2$group = as.factor(C)

我的问题:假设我想向这个数据框添加一个 ID 列,将第一个观察值列为“100”,并为每个新列将 ID 增加 1。我尝试按如下方式执行此操作:

my_data_2$id = seq(101, 200, by = 1)

但是,这“损坏”了数据框:

head(my_data_2)
          a         b          c
1 10.381397  9.534634 12.8330946
2 10.326785  6.397006  8.1217063
3  8.333354 11.474064 11.6035562
4  9.583789 12.096404 18.2764387
5  9.581740 12.302016  4.0601871
6 11.772943  9.151642 -0.3686874
                                                                                                                                                                                                                                                                                                                                        group
1        c(9.98552413605153, 9.53807731118048, 6.92589246998173, 8.97095368638206, 9.70249918748529, 10.6161773148626, 9.2514231659343, 10.6566757899233, 10.2351848084123, 9.45970725813352, 9.15347719257448, 9.30428244749624, 8.43075784609759, 11.1200169905262, 11.3493313166827, 8.86895968334901, 9.13208319045466, 9.70062759133717)
2          c(8.90358954387628, 13.8756093430144, 12.9970566311467, 10.4227745183785, 21.3259516051226, 4.88590162247496, 10.260282181, 14.092109840631, 7.37839577680487, 9.09764173775965, 15.1636139760987, 9.9773055885761, 8.29361737323061, 8.61361852648607, 12.6807897406641, 0.00863359720839085, 10.7660528147358, 9.79616528370632)
3 c(25.8063583646201, -11.5722310383483, 8.56096791164312, 12.2858029391835, -0.312392781809937, 0.946343715084028, 2.45881422753051, 7.26197515743391, 0.333766891336273, 14.9149659649045, -4.55483090530928, -19.8075232688082, 16.59106194569, 18.7377329188129, 1.1771203751127, -6.19019973790205, -5.02277721344565, 23.3363430334739)
4                                                                                                                                                                                                                                                                                     c(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
5                                                                                                                                                                                                                                                 c("B", "B", "B", "A", "B", "B", "B", "B", "B", "B", "B", "A", "B", "B", "B", "B", "B", "B")
6                                                                                                                                                                                                                                                 c("B", "B", "B", "B", "B", "A", "B", "B", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B")
   id
1 101
2 102
3 103
4 104
5 105
6 106

有人可以告诉我如何解决这个问题吗?

谢谢!

您的问题不在于您的 ID 列,您的问题在于您定义组变量的位置。您调用 as.factor(C)(注意大写 C),但数据框的列是小写 c。所以我猜你已经在你的数据框之外定义了另一个对象 C,它现在“破坏”了你的数据框。

您可能想做的事:

my_data_2$group <- as.factor(my_data_2$c)

我找到答案了!

a = rnorm(100,10,1)
b = rnorm(100,10,5)
c = rnorm(100,10,10)

my_data_2 = data.frame(a,b,c)

my_data_2$group = as.factor("C")
my_data_2$id = seq(101, 200, by = 1)

 head(my_data_2)
          a         b          c group  id
1  9.436773 10.712568  3.7699748     C 101
2 10.265810  3.408589 11.9230024     C 102
3 10.503245 12.197000  8.3620889     C 103
4  9.279878  7.007812 16.8268852     C 104
5 10.683518  8.039032  5.2287997     C 105
6 11.097258 10.313103  0.4988398     C 106