【发布时间】:2019-01-07 14:30:45
【问题描述】:
我目前正在处理一项旅行调查的数据。旅游信息以奇怪的字符串格式给出:
tours <- c("Home_work_service_leisure_business_leisure_Home", "Home_service_work_Home", "Home_leisure_shopping_leisure_education_Home")
distance <- c("0_1.7_0.5_2.4_0.8_1.8_0", "0_5.2_7_0", "0_2.8_3_0.2_1.9_0")
primary_act <- c(1, 2, 4)
# "home" is not considered an activity and thus it is activity zero.
Travel_survey <- data.frame(tours, distance , primary_act)
我想从这些数据中提取到主要活动的总距离。这意味着我想总结工作或教育之前的行程距离。 所以在我们的例子中,结果应该是:
Travel_survey$distance_primact <- c(0.17, 12.2, 7.9)
我设法做的是拆分距离字符串并对值求和。但是,我想告诉函数只对第一个 n 值求和,而 n 等于 primary_act。
sapply(strsplit(as.character(Travel_survey$distance), "_"),
function(x) sum(as.numeric(x), na.rm=TRUE))
有没有人知道如何做到这一点?如果有任何帮助,我将不胜感激。
【问题讨论】:
-
不清楚你是如何获得
distance_primact的。你能举个例子吗?第一行是“0.17”吗? -
第一个应该是0 + 1.7 = 1.7 ...对吧?
-
这是正确的第一个是 0+1.7