【发布时间】:2019-08-06 18:08:23
【问题描述】:
假设我有一个如下的数据框:
mydf <- structure(list(club_member = c(0L, 0L, 1L, 0L, 0L, 0L), map_of_blah = c(NA,
"{Upgrade=1.0}", "{Apples=0.32786885245901637, In-Game Boost=0.06557377049180328, WalkoffGm=0.08196721311475409, Improve=0.5245901639344263}",
NA,
"{MystBox=0.9977827050997783, Upgrade=0.0022172949002217295, Apples = 1}",
NA)), row.names = c(NA, 6L), class = "data.frame")
glimpse(mydf)
Observations: 6
Variables: 2
$ club_member <int> 0, 0, 1, 0, 0, 0
$ map_of_blah <chr> NA, "{Upgrade=1.0}", "{Apples=0.32786885245901637, In-Game Boost=0.06557377049180328, WalkoffGm=0.08196721311475409, Improve=0.5245901639344263}", NA, "{MystBox=0.9977827050997783, …
mydf
club_member map_of_blah
1 0 <NA>
2 0 {Upgrade=1.0}
3 1 {Apples=0.32786885245901637, In-Game Boost=0.06557377049180328, WalkoffGm=0.08196721311475409, Improve=0.5245901639344263}
4 0 <NA>
5 0 {MystBox=0.9977827050997783, Upgrade=0.0022172949002217295, Apples = 1}
6 0 <NA>
我直接从我们的数据库中提取数据到 r 中,其中一种数据类型(Presto db)是一个数组映射,其中 r.在 r 中,看起来这已作为每个观察的字符向量被读入。
字段“map_of_blah”的每个向量都包含不同的值,但数据集中总共可能有 15 到 20 个值,例如“Apples”、“In-Game Boost”、“Improve”等。
我想将此字段处理成一个新的集合字段,一个用于包含在“map_of_blah”下的向量中的每个不同值。
在深入研究循环和正则表达式之前,我想知道是否有人以前遇到过这个问题,是否有“正确”的方法来做到这一点?我一直在寻找 spread() 函数的 tidyr,但我不确定它是否适用于每个观察的每个向量中不同数量的字段。
如何处理 mydf 以在 map_of_blah 及其对应值中添加名称值对的附加字段?
【问题讨论】:
-
当同一个俱乐部成员有多个值时,你想做什么?例如,club_member 0 同时具有 Upgrade = 1.0 和 Upgrade = 0.0022172949002217295
-
Club member 不是 id,而是一个布尔变量,表示用户是否是俱乐部成员。每行是一个用户。对不起,我的名字很糟糕
-
dplyr.tidyverse.org/reference/group_split.html -- 这可能就是你要找的。span>
-
不用担心,这有帮助
标签: r