我有一个数据帧,看起来像这样

data.frame(service=c("1,2,3,4","2,4,5","1,3,4"),
                      score=c("1,2,1,3","1,1,3","1,1,1"))
        a       b
1 1,2,3,4 1,2,1,3
2   2,4,5   1,1,3
3   1,3,4   1,1,1

变量SERVICE指的是1-5之间的分类变量,而分数也是前一次服务中每个服务的1-3的分类变量.请注意,每个受访者都使用了不同的服务,因此长度不同,每个变量也不相同

我需要reshape 此数据帧以将分数与每个服务相关联.最终结果将如下所示

data_frame(ind=c(1,1,1,1,2,2,2,3,3,3),
                 serv=c(1,2,3,4,2,4,5,1,3,4),
                 score=c(1,2,1,3,1,1,3,1,1,1))

    ind  serv score
   <dbl> <dbl> <dbl>
 1     1     1     1
 2     1     2     2
 3     1     3     1
 4     1     4     3
 5     2     2     1
 6     2     4     1
 7     2     5     3
 8     3     1     1
 9     3     3     1
10     3     4     1

我首先拆分变量服务,以此方式创建所有类别

library("qdapTools","tidyverse")

lst1 <- lapply(strsplit(df$serv, ","), function(x) 
  replace(x, (! x %in% c("1", "2", "3","4","5")) & !is.na(x), "other"))

lst1_tab<-mtabulate(lst1)%>% setNames(paste0('serv_', names(.)))
df<-cbind(df,lst1_tab)

     serv   score serv_1 serv_2 serv_3 serv_4 serv_5
1 1,2,3,4 1,2,1,3      1      1      1      1      0
2   2,4,5   1,1,3      0      1      0      1      1
3   1,3,4   1,1,1      1      0      1      1      0

我这样做是为了在以后reshape 长形式的df.然而,并不是所有人都接受了所有的服务.例如,个人1没有接受服务5.因此,我不知道如何划分变量分数以将其与每个服务相关联

推荐答案

我们可以利用

library(dplyr)
library(tidyr)
df1 %>% 
 mutate(ind = row_number(), .before = 1) %>% 
 separate_longer_delim(c(service, score), delim = ",")

-输出

   ind service score
1    1       1     1
2    1       2     2
3    1       3     1
4    1       4     3
5    2       2     1
6    2       4     1
7    2       5     3
8    3       1     1
9    3       3     1
10   3       4     1

R相关问答推荐

pivot_longer:names_to和names_pattern

以R表示的gglikert地块调整总数

保存shiny 的代码嗅探器:避免$ Symbol问题

在特定列上滞后n行,同时扩展框架的长度

使用对管道内单元格的引用生成新变量

行式dppr中的变量列名

使用tidyverse / Mutate的存款账户余额

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

在不安装软件包的情况下测试更新

如何在R中添加截止点到ROC曲线图?

在R中将特定列的值向右移动

从外部文件读取多个值作为字符向量

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

如何在R库GoogleDrive中完全删除预先授权的Google帐户?

悬崖三角洲超大型群数计算导致整数溢出

将标识符赋给事件序列,避免错误观察

使用不同的定性属性定制主成分分析中点的 colored颜色 和形状

以不同于绘图中元素的方式对GG图图例进行排序

使用ggplot2绘制具有边缘分布的坡度图

网络抓取NBA.com