首页 > 解决方案 > 将一个单元格中的多个值分成多个单元格

问题描述

我正在处理专利数据,我在一个单元格中有多个值(国际专利分类),用逗号分隔。例如:C12N、C12P、A01(在一个单元内)。我想分析每个专利有多少种不同的 4 位数分类。为此,我需要首先将各个值分开并将它们中的每一个放入一个单独的单元格中。其次,我需要计算每一行的唯一值(然后将每个值放在单独的列中)。

如何将一个单元格中的单个值分隔为 Excel 或 R 中的多个单元格。您可以建议任何 excel 或 R 函数吗?

这是关于数据在 R 或 Excel 中的样子的可重现示例。

#Example of how the data looks like 
Publication_number<-c(12345,10012,23323,44556,77999)
IPC_class_4_digits<-c("C12N,CF01,C345","C12P,F12N,F039","A014562,F23N", "A01C, A01B, A01F, A01K, A01G", "C10N, C10R, C10Q, C12F")

data_example<-cbind(Publication_number, IPC_class_4_digits)
View(data_example)

预期的大约应该是一列“计数”,计算不同 4 位数字的数量。在这种情况下 => c(3, 3, 2, 5, 4)

标签: rexcelfunction

解决方案


假设您有一个包含两列的数据框,Publication_number并且IPC_class_4_digits可以cSplitsplitstackshape包中使用:

library(splitstackshape) 

# assuming your data
df <- data.frame(Publication_number, IPC_class_4_digits)
 
cSplit(df, 'IPC_class_4_digits', ',')

输出:

   Publication_number IPC_class_4_digits_1 IPC_class_4_digits_2 IPC_class_4_digits_3
1:              12345                 C12N                 CF01                 C345
2:               1001                 C12P                 F12N                 F039
3:               2332              A014562                 F23N                 <NA>

推荐阅读