【发布时间】:2020-05-24 10:58:11
【问题描述】:
对于一个表述不当的问题,我深表歉意。我是 R 和编程以及发布问题的新手。
我正在处理面板数据。我有两个上下文不同的变量:cat(范围从 1 到 4 的类别,其中一个人在 4 个可能的地方中的 3 个赌博)和 d.stake = 在给定类别中的赌注金额。 Cat 和 d.stake 嵌套在个体 (id) 中(上下文自变量)。
我希望在不同类别的不同类别的赌注金额之间做出不同的分数。
我创建了四个变量。其中两个lag是一个滞后变量(ldstake和ldstake2)和两个分数不同的变量(diff1 = stake - ldstake; diff2 stake - ldstake2),使用代码
df.3$ldstake <- c(NA, df.3$d.stake[-nrow(df.3)])
df.3$ldstake[which(!duplicated(df.3$id))] <- NA
df.3$ldstake2 <- c(NA, df.3$ldstake[-nrow(df.3)])
df.3$ldstake2[which(!duplicated(df.3$id))] <- NA
df.3 <- df.3 %>%
mutate(diff1 = d.stake - ldstake,
diff2 = d.stake - ldstake2)
这给了我以下数据框:
id cat d.stake ldstake ldstake2 diff1 diff2
1 1 50 NA NA NA NA
1 2 60 50 NA 10 NA
1 3 55 60 50 -5 5
2 1 34 NA NA NA NA
2 2 74 34 NA 40 NA
2 4 12 74 34 -62 22
但是,我希望用每个人的第三行 diff2 替换每个人的第一行 diff1(NA)(参见下面的示例)。
id cat d.stake ldstake ldstake2 diff1 diff2
1 1 50 NA NA !5! NA
1 2 60 50 NA 10 NA
1 3 55 60 50 -5 !5!
2 1 34 NA NA *22* NA
2 2 74 34 NA 40 NA
2 4 12 74 34 -62 *22*
这可能吗?我很高兴收到一个脚本,我可以用 diff2 的值和个人的最后一个值(第三次或最后一次观察)替换第一个 NA 值。此外,如果有一个脚本可以自动执行此操作(即创建 cat2-1 cat3-2 和 cat3-1 之间的差异分数),我将不胜感激获得任何帮助。
一切顺利, 托尼
【问题讨论】:
-
听起来您最终对给定
d.stake组合之间的差异感兴趣id- 对吗?考虑到不同的cat数字,您能否阐明在这种情况下您的最终/所需数据框会是什么样子?您是否希望diff2-3之类的列名反映第二个和第三个cat之间的差异(独立于cat数字),还是cat2 和cat3 之间的差异? -
没错。目的是分析不同情况下的赌博行为。但是,由于个人在 3 个地点赌博,我需要考虑到观察结果嵌套在个人内部。我想要一个名为 diff1 的列(长格式)。但是,考虑到您的建议,我还希望有一个分类列明确说明比较的猫类别(cat2vscat1;cat3vs1;cat4vs1;cat3vs2;cat4vs2;cat4vs3)。那可能吗?谢谢!!
标签: r dataframe replace na panel-data