首先,我必须更改我的问题(我无法发布新问题),所以我希望这个新问题将获得一些(+)票,以保持我在SO中发布的能力。向SO社区道歉,但我在这里尝试像其他所有人一样学习。
我有一个活动数据集,可用于为每个活动创建直方图。一列是“活动”,我需要从活动列中提取元素,但是它有2个变量-type
和confidence
。
>tail(df)
timestampMs activity
9104 1415996184265 IN_VEHICLE, UNKNOWN, ON_BICYCLE, STILL, 73, 23, 2, 2
9105 1415996140727 UNKNOWN, IN_VEHICLE, ON_BICYCLE, 71, 27, 2
9106 1415996055604 TILTING, 100
9107 1415995996249 UNKNOWN, ON_BICYCLE, ON_FOOT, UNKNOWN, IN_VEHICLE, STILL, 46, 25, 17, 17, 8, 4
9108 1415995854775 TILTING, 100
9109 1415995976124 TILTING, 100
我使用了lapply
,它将列出并排列以下所示的值。
> df$activity <- lapply(df$activity, function(x) as.data.frame(t(x)))
> tail(df$activity)
[[1]]
1 2 3 4
type IN_VEHICLE UNKNOWN ON_BICYCLE STILL
confidence 73 23 2 2
[[2]]
1 2 3
type UNKNOWN IN_VEHICLE ON_BICYCLE
confidence 71 27 2
[[3]]
1
type TILTING
confidence 100
[[4]]
1 2 3 4 5 6
type UNKNOWN ON_BICYCLE ON_FOOT UNKNOWN IN_VEHICLE STILL
confidence 46 25 17 17 8 4
[[5]]
1
type TILTING
confidence 100
然后我使用了unnest
函数;
df2 <- df %>%
transform(activity = str_split(activity, ",")) %>%
unnest(activity)
它列出lapply
中的所有元素,包括置信度变量(这是第4个元素)。
timestampMs activity
1415995996249 list(type = c("UNKNOWN"
1415995996249 "ON_BICYCLE"
1415995996249 "ON_FOOT"
1415995996249 "UNKNOWN"
1415995996249 "IN_VEHICLE"
1415995996249 "STILL")
1415995996249 confidence = c(46
1415995996249 25
1415995996249 17
1415995996249 17
1415995996249 8
1415995996249 4))
我想要的是每个时间戳,它将列出类型(我使用的是相同的时间戳)。提取双引号内的值的最佳方法是什么,如果没有像最后6行这样的引号,我可以将其设置为N / A或空白,以便稍后对其进行过滤:
timestampMs activity
1415995996249 "UNKNOWN"
1415995996249 "ON_BICYCLE"
1415995996249 "ON_FOOT"
1415995996249 "UNKNOWN"
1415995996249 "IN_VEHICLE"
1415995996249 "STILL"
答案 0 :(得分:0)
我知道我无法发布更多问题,尽管这个新更新的问题没有得到任何反馈,但是作为专业人士,这没关系。因此,我不是唯一可以提出问题的网站。我确实希望状态会在将来改变,因为我知道我可以做出贡献。无论如何,我仍然想分享一些细节。刚刚找到了一种自己unnest
矩阵的方法,并且能够导出所需的输出。使用unnest(df$activity)
,然后在输出中应用melt
函数以获取此表:
从此表中以宽格式显示:
> tail(df2) *#result of unnest*
timestampMs 1 2 3 4 5 6 7
18213 1415995996249 UNKNOWN ON_BICYCLE ON_FOOT UNKNOWN IN_VEHICLE STILL <NA>
18214 1415995996249 46 25 17 17 8 4 <NA>
18215 1415995854775 TILTING <NA> <NA> <NA> <NA> <NA> <NA>
18216 1415995854775 100 <NA> <NA> <NA> <NA> <NA> <NA>
18217 1415995976124 TILTING <NA> <NA> <NA> <NA> <NA> <NA>
18218 1415995976124 100 <NA> <NA> <NA> <NA> <NA> <NA>
到此表并进行一些操作。
> tail(df3) *#result of melt*
timestampMs activity value
18213 1415995996249 1 UNKNOWN
36431 1415995996249 2 ON_BICYCLE
54649 1415995996249 3 ON_FOOT
72867 1415995996249 4 UNKNOWN
91085 1415995996249 5 IN_VEHICLE
109303 1415995996249 6 STILL
127521 1415995996249 7 NA