我在R工作 我想知道如何单独引用一列的所有值而不将其全部写入。我想用它根据第一个表的行上的值对第二个表的各个列求和/计数。
Table1:
|columnA | columnB|
|11 | |
|12 | |
|13 | |
Table2:
|columnA | columnC|
|11 | 5 |
|11 | 5 |
|11 | 6 |
|12 | 1 |
|12 | 1 |
|13 | 5 |
Output Table:
|Table1:
|columnA | columnB|
|11 | 16 |
|12 | 2 |
|13 | 5 |
我尝试过以下代码:
Table1$columnB <- length(subset(Table2,Table2$columnA == Table1$columnA)$ColumnA)
显然这是行不通的,但是我想调用每一行的值,而不是在columnA中写出每个引用的值(我需要填写很多行和列)
#此操作的主要焦点是在填充下一列中的值时引用表第一列中的值。
我显然可以联接或聚合以获得所需的值,但是我的数据表是200行乘25列,所以我想要一个代码来填充每一列,以引用另一列中该行的值。 (如果这是excel,我将编写一个vlookup或index(match())函数并将其向下拖动到该列中以引用该行的单元格。但是我不知道是否可以在R中完成。>
不幸的是,我找不到一个好的解决方案。我最终写了一个索引各个值的循环。但是,这非常慢,花费了20分钟以上的时间填充了250行的80列(大约20种不同的代码排列,然后循环)。以下是填充一列的循环之一的示例。有任何改善建议吗?
for (i in 1:length(Table1$columnA)) {
m <- (Table1[i,columnA])
x <- length(unique(subset(Table2,Table2$columnA == m )$Table2$columnC))
x <- as.numeric(x)
Table1[i,"columnB"] <- x
}