我有R代码,但它不够优雅且效率低下.我想知道是否有更好的方法:即如何对这个过程进行矢量化和/或减少计算时间?
library(data.table)
dt <- data.table(
visited_a = c(1, 1, 0, 0),
visited_b = c(1, 0, 0, 0),
visited_c = c(0, 0, 1, 1),
purchased = c("b", "b", "c", "a")
)
Run Code Online (Sandbox Code Playgroud)
我的data.table有关于消费者是否在2017年访问商店的虚拟指标.因此visited_a = 0
意味着她a
在2017年visited_b = 1
没有访问商店b
,这意味着她在2017年访问了商店.数据还列出了消费者在2018年购买的商店; 所有这些消费者都进行了购买.因此,消费者可能已经或可能没有访问过她(今年)购买的商店(去年).
我想添加一个变量purchased_was_visited
来捕获它.解决方案是:
dt$purchased_was_visited <- c(1, 0, 1, 0)
Run Code Online (Sandbox Code Playgroud)
这是我非常不雅的代码,可悲地循环遍历data.table一次一行.肯定有更好的办法!
dt[ , purchased_was_visited := NA]
for(i in 1:nrow(dt)) {
brand <- dt[i, purchased]
col <- paste0("visited_", brand)
was_it <- dt[i, ..col]
dt[i, purchased_was_visited := was_it]
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行迭代 for 循环来计算因子变量水平的相关性。我的数据集中有 32 支球队,每支球队都有 16 行数据。我想将年份与每个团队的积分关联起来。我可以一项一项地做到这一点,但想在循环方面做得更好。
correlate <- data %>%
select(Team, Year, Points_Game) %>%
filter(Team == "ARI") %>%
select(Year, Points_Game)
Run Code Online (Sandbox Code Playgroud)
cor(correlate)
我通过以下方式创建了一个“团队”对象:
teams <- levels(data$Team)
Run Code Online (Sandbox Code Playgroud)
使用 [i] 迭代所有 32 支球队以获得每支球队年份和积分的相关性的一点帮助将会非常有帮助!
我只是运行我的回归,包括固定效应,在这种情况下是 id_school。接下来,我从观星者选项卡中省略了所有虚拟变量,以便节省一些空间。
问题是我想在我的选项卡中包含一行,以便报告我使用了固定效果,例如:固定效果是不......像图像一样的东西。
谢谢你。 在此处输入图片说明