【发布时间】:2021-05-22 01:43:33
【问题描述】:
我有一个数据框如下:
nearby_ids <- NULL
for (i in 1:10){
string <- paste(as.character(sample(setdiff(1:10,i), sample(setdiff(1:10,i)))), collapse = ",")
nearby_ids <- c(nearby_ids, string)}
my_df <- data.frame(school_id=1:10, classes=sample(1:50, 10), nearby_schools_id = nearby_ids, stringsAsFactors = FALSE)
看起来是这样的:
变量“school_id”和“classes”是整数,nearth_schools_id 是字符。
我想要的是以下内容(希望不经过循环):
对于每一行,我想获取 near_schools_ids,将它们用作索引来对数据框进行子集化,对于那个子集化的数据框,我想对“类”求和。
这个想法是,我想知道附近所有学校的班级总数。
预期: 所以以第 1 行为例,我想输出 122 (= 46+8+44+24)。
我知道我需要在这里使用strsplit。但我试图避免循环和应用()(我有大约 300 万行,我想要最有效的方式)。
当我实现strsplit(my_df$nearby_schools_id, ",") 时,我立即得到了一个向量列表,这使得事情变得稍微复杂了。
对此有矢量化解决方案吗? 最好的解决方法是什么?
感谢任何帮助
【问题讨论】:
标签: r list dataframe subset vectorization