Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的pivot_*()函数_R_Tidyr - Fatal编程技术网

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列和逗号分隔的值?