R中的pivot_*()函数
我正在尝试创建一个R中的pivot_*()函数,r,tidyr,R,Tidyr,我正在尝试创建一个tible,其中包含property\u id以及包含真值或假值的设施列。我已尝试了以下步骤,但无法继续 properties %>% select(property_id, facilities) %>% separate(facilities, into = paste0("f", 1:9), sep = ",") 我们将“设施”列按拆分,,使用qdapTools中的mtabulate获取列表中每个唯一元素的
tible
,其中包含property\u id
以及包含真值或假值的设施列。我已尝试了以下步骤,但无法继续
properties %>%
select(property_id, facilities) %>%
separate(facilities, into = paste0("f", 1:9), sep = ",")
我们将“设施”列按
拆分,
,使用qdapTools
中的mtabulate
获取列表中每个唯一元素的计数,转换为逻辑矩阵(>0
)和cbind
属性id”列
library(qdapTools)
cbind(properties['property_id'], mtabulate(strsplit(properties$facilities, ",")) > 0)
-输出
property_id airport shuttle bbq breakfast free wifi game console garden kitchen laundry on-site restaurant parking pool spa
1 2668 TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE
2 4656 TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE
3 4563 FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
4 4088 FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
5 2188 FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
6 4171 FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE
>
我们将“设施”列按,
拆分,使用qdapTools
中的mtabulate
获取列表中每个唯一元素的计数,转换为逻辑矩阵(>0
)和cbind
属性id”列
library(qdapTools)
cbind(properties['property_id'], mtabulate(strsplit(properties$facilities, ",")) > 0)
-输出
property_id airport shuttle bbq breakfast free wifi game console garden kitchen laundry on-site restaurant parking pool spa
1 2668 TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE
2 4656 TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE
3 4563 FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
4 4088 FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
5 2188 FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
6 4171 FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE
>
在tidyr
中,我们可以使用分隔行
和透视行
properties%分隔行(设施,sep=',')%>%
pivot\u Wide(id\u cols=c(属性\u id、目的地、属性\u类型)、名称\u from=设施、值\u from=nr\u房间、,
值\u fn=函数(x)为数值型(x),值\u fill=0)
#>#tibble:6 x 15
#>酒店\u id目的地酒店\u类型`机场班车'`免费wifi`花园
#>
#>12668布里斯班真酒店
#>14656布里斯班酒店真假
#>34563布里斯班公寓假
#>4 4088布里斯班公寓假真假
#>52188布里斯班公寓假真假
#>64171布里斯班公寓假真
#> # ... 还有9个变量:早餐、游泳池、,
#>#现场餐厅、烧烤、水疗、洗衣房、,
#>#厨房、停车场、游戏机
由(v2.0.0)于2021年5月1日创建
不用说,在tidyr
中,id\u cols
参数的pivot\u wider
中可能会删除不需要的列,我们可以使用单独的行
和pivot\u wider
properties%分隔行(设施,sep=',')%>%
pivot\u Wide(id\u cols=c(属性\u id、目的地、属性\u类型)、名称\u from=设施、值\u from=nr\u房间、,
值\u fn=函数(x)为数值型(x),值\u fill=0)
#>#tibble:6 x 15
#>酒店\u id目的地酒店\u类型`机场班车'`免费wifi`花园
#>
#>12668布里斯班真酒店
#>14656布里斯班酒店真假
#>34563布里斯班公寓假
#>4 4088布里斯班公寓假真假
#>52188布里斯班公寓假真假
#>64171布里斯班公寓假真
#> # ... 还有9个变量:早餐、游泳池、,
#>#现场餐厅、烧烤、水疗、洗衣房、,
#>#厨房、停车场、游戏机
由(v2.0.0)于2021年5月1日创建
不用说,不需要的列可能会从pivot\u wider的id\u cols
参数中删除pivot\u wide
我已根据请求编辑了文章,我可以将其分开,但不确定如何使用pivot()为此。@RanjiRaj ry更新的代码是否可以仅获取properties_id列和逗号分隔的值?我已根据请求编辑了文章,我可以将其分隔,但不确定如何使用pivot_*()。@RanjiRaj ry更新的代码是否可以仅获取properties_id列和逗号分隔的值?