【问题标题】:R - creating time use variablesR - 创建时间使用变量
【发布时间】:2018-08-15 06:38:53
【问题描述】:

我想使用 UKTUS 数据库在 R 中创建时间使用变量。

UKTUS 将数据集定义的每 10 分钟的人员活动记录为act1_1act1_2、...、act1_144 变量(144 x 10 分钟)。

每个活动都细分为不同的编码方案。例如 SLEEP 编码如下:

110 睡眠 111 在床上睡不着 120 病在床上

我在 R 中创建了一个包含 129 列和 16533 行的矩阵。

Activities <-uktus15_diary_wide[,c ("serial", "pnum","ddayw","DVAge", "dmonth", "dyear","WhenDiary","AfterDiaryDay","WhereStart","WhereEnd","RushedD","Ordinary","KindOfDay","Trip","enjm1","act1_1, "act1_2", "act1_3", "act1_4", "act1_5", "act1_6", "act1_7", "act1_8", "act1_9", "act1_10",                               "act1_11", "act1_12", "act1_13", "act1_14","act1_15", "act1_16", "act1_17", "act1_18", "act1_19", "                                   "act1_21", "act1_22", "act1_23", "act1_24", "act1_25", "act1_26", "act1_27", "act1_28", "act1_29", "act1_30",
                                    "act1_31", "act1_32", "act1_33", "act1_34", "act1_35", "act1_36", "act1_37", "act1_38", "act1_39", "act1_40",
                                    "act1_41", "act1_42", "act1_43", "act1_44", "act1_45", "act1_46", "act1_47", "act1_48", "act1_49", "act1_50",
                                    "act1_51", "act1_52", "act1_53", "act1_54", "act1_55", "act1_56", "act1_57", "act1_58", "act1_59", "act1_60",
                                    "act1_61", "act1_62", "act1_63", "act1_64", "act1_65", "act1_66", "act1_67", "act1_68", "act1_69", "act1_70",
                                    "act1_71", "act1_72", "act1_73", "act1_74", "act1_75", "act1_76", "act1_77", "act1_78", "act1_79", "act1_80",
                                    "act1_81", "act1_82", "act1_83", "act1_84", "act1_85", "act1_86", "act1_87", "act1_88", "act1_89", "act1_90",
                                    "act1_91", "act1_92", "act1_93", "act1_94", "act1_95", "act1_96", "act1_97", "act1_98", "act1_99", "act1_100",
                                    "act1_101", "act1_102", "act1_103", "act1_104", "act1_105", "act1_106", "act1_107", "act1_108", "act1_109",
                                    "act1_110", "act1_111", "act1_112", "act1_113", "act1_114")]

对于 TV 变量,我在 Stata 中生成了代码,但我不知道如何为 R 重写。有人可以帮帮我吗?

我有 144 个时间步长; 8209 和 8230 之间的活动与看电视有关。

广播/电视变量的Stata命令如下:

generate tv = 0
generate radio = 0
forvalues i = 1/144 {
replace tv = tv+10 if (act1_`i’ > 8209 & act1_`i’ < 8230)
replace radio = radio+10 if (act1_`i’ > 8229 & act1_`i’ < 8321)
}

【问题讨论】:

  • 你能告诉minimal reproducible example你想要达到的目标吗?
  • 我已经添加了[stata] 标签,也许它会让有这两种技能的人回答这个问题。
  • @markus 谢谢你的帮助。我想要一个名为 TV 的变量,它由以下代码定义:TV AND VIDEO; 8210 未指定的电视视频或 DVD 观看; 8211 在电视上看电影; 8212 在电视上观看体育节目; 8219 其他指定的电视收看; 8220 未指定的视频观看; 8221 在视频中观看电影; 8222 观看体育视频; 8229 其他指定的视频观看;
  • 所以在Stata中你有144个变量act1_1act1_2act1_144,你想知道它们在指定范围内的次数。您的第一步包括清楚地解释您如何在 R 中保存数据。翻译成更简单的东西,因为没有人知道答案(不是我;我是 Stata 人)想要或需要一个 144 列的示例。编辑您的问题;不要在 cmets 中添加关键细节。

标签: r stata


【解决方案1】:

这是您指定的循环和 if 语句的 R 语法。 +15 用作您的活动列在 db 中在 15 个其他列之后开始。

tv <-0
radio <-0
for (i in 1:144){
  tv <- ifelse(Activities[, i+15]>8209 & Activities[, i+15]<8230, tv+10, tv)
  radio <- ifelse(Activities[, i+15]>8229 & Activities[, i+15]<8321, radio+10, radio)
}

【讨论】:

  • 亲爱的纳尔,感谢您提供代码。不幸的是,当我编译时,我收到一个列名 act1_144,其值范围为 0 到 1100 分钟。但是,当我在 Stata 中运行统计测试时,TV 变量均值和标准差不匹配。在 stata 中,TV 的标准差为 233.8124,平均值为 295.4556。在 R 中,TV 的标准差为 128. 5139,平均值为 138.5441。你能帮我解决这个问题吗?这是由于 sum 命令吗?谢谢
  • 是不是因为Activity矩阵定义的原因;缺少 for 循环 - 它只读取第 144 列而不是所有 Activity 矩阵?谢谢?
  • 您能否提供代码如何计算均值和标准偏差。谢谢
  • 亲爱的 Nar,基本上我在 Stata 中创建了一个 do 文件,使用以下代码 generate tv = 0 generate radio = 0 forvalues i = 1/144 { replace tv = tv+10 if (act1_i’ &gt; 8209 &amp; act1_ i' i’ > 8229 & act1_i'
  • 他们的纳尔,谢谢你的帮助——代码很好。如果您有时间可以帮我做两件事:(1)如何将变量命名为 TV 或 RADIO 而不是 act1_144(2)如何通过标识符对 TV 和 Radio 进行分组 - serial 和 pnum 变量。谢谢
猜你喜欢
  • 2022-11-13
  • 2022-12-14
  • 2016-07-09
  • 2018-05-27
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多