请选择 进入手机版 | 继续访问电脑版
2816 1

[有偿编程] 利用R语言对数据进行分列 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

94%

还不是VIP/贵宾

-

威望
0
论坛币
136 个
通用积分
35.0424
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
680 点
帖子
33
精华
0
在线时间
368 小时
注册时间
2016-2-9
最后登录
2021-6-13

50论坛币
现在有一笔数据,需要对codeexpl分列,我已经通过str_split函数用\n分隔符分出来,但是现在的工作是需要根据各个数据的取值进行分情况分列。
举个栗子:
(1)原始数据见下图: Snipaste_2021-06-12_10-37-23.png

(2)我通过str_split函数分出来后的效果是下图:
Snipaste_2021-06-12_10-39-53.png

Snipaste_2021-06-12_10-39-28.png

问题:请教一下大家我怎么把冒号前面的文字变成列名,冒号变成取值。简单的分列可能不好用,主要原因是冒号前面这些文字顺序不一定一样,然后每个取值也不一定一样,这里的例子是7个,可能是8个,9个之类的,举个栗子。
Snipaste_2021-06-12_10-45-09.png

可以看见有些是变更前专利权人,有些是变更前申请人。
我的思路是先想找出去重后的所有这些字段,然后再匹配进去,但是一直出不来。
所以想请教一下论坛大佬,谢谢各位了~,50论坛币奉上。
example.xlsx (11.95 KB)


关键词:R语言 split 50论坛币 Eexp 原始数据

回帖推荐

  1. library(openxlsx)
  2. library(stringr)
  3. mydata <- read.xlsx("example.xlsx")
  4. expl <- mydata$codeExpl

  5. # 将expl每个元素转成一个带有名字的向量

  6. expl_list <- list()
  7. for (i in seq_along(expl)) {
  8.   expl_vector  <-  unlist(str_split(expl[i], "_x000D_\n"))[-1]  # 将每行进行分词处理
  9.   exp_vectorname <- gsub(":.+", "", expl_vector)
  10.   expl_vector <- gsub(".+:", "", expl_vector)
  11.   names(expl_vector) <- exp_vectorname  
  12.   expl_list[[i]] <- expl_vector[sort(names(expl_vector))]  # 排序,尽量让同意变量名位置相同
  13. }

  14. # 找出每个变量名各种叫法
  15. names.list <- lapply(expl_list, names)

  16. # 创建一个提取取某列表第x元素的函数
  17. myfun <- function(mylist) {
  18.   function(x) {
  19.     len = length(mylist)
  20.     list_sub = vector(length = len)
  21.     for (i in 1:len){
  22.       list_sub[i] = mylist[[i]][x]
  23.     }
  24.     return(unique(list_sub))
  25.   }
  26. }

  27. mylist.fun <- myfun(names.list)

  28. names_call <- lapply(1:length(names.list[[1]]), function(x) mylist.fun(x))

  29. # 找出叫法>1的变量名
  30. Filter(function(x) length(x)>1, names_call)

  31. # 接下来可以通过更改exp_list里的名字,然后将列表转为数据框(略)
  32. # 注意sort可能不一定能将正确将同意的名字放在相同的位置,这里面需要人类的思考。
复制代码

已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-18 08:29