R 将列中的文本转换为数据帧
我在数据集的列中有如下文本数据R 将列中的文本转换为数据帧,r,tm,R,Tm,我在数据集的列中有如下文本数据 UNIQUEID Cloumn1 1 FG 2 PR FG RT 3 FG BR UP DR ST .... 我想把数据列转换成一个数据帧,这样输出就如下图所示,这些文本FG、RN等就变成了变量 UNIQUEID FG PR RT BR UP DR ST 1 1 0 0 0 0 0 0 2 1 1 1 0 0 0 0 3 1 0
UNIQUEID Cloumn1
1 FG
2 PR FG RT
3 FG BR UP DR ST
....
我想把数据列转换成一个数据帧,这样输出就如下图所示,这些文本FG、RN等就变成了变量
UNIQUEID FG PR RT BR UP DR ST
1 1 0 0 0 0 0 0
2 1 1 1 0 0 0 0
3 1 0 0 1 1 1 1
......
我已尝试使用TM软件包进行转换,如下所示
corpus = Corpus(VectorSource(weather$codesum))
corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, removePunctuation)
corpus = tm_map(corpus, removeWords, stopwords("english"))
corpus = tm_map(corpus, PlainTextDocument)
dtm = DocumentTermMatrix(corpus)
dtm = as.data.frame(as.matrix(dtm))
colnames(dtm) = make.names(colnames(dtm))
str(dtm)
data.frame: 20517 obs. of 1 variable:
$ prfg: num 0 0 0 0 0 0 0 0 0 0 ...
当我看到输出时,我发现只有一个变量。我希望所有的文本都是变量
请推荐解决方案如果您喜欢tidyr和dplyr,您也可以尝试此解决方案:
# libraries
library (tidyr)
library(dplyr)
# your data
t <- "UNIQUEID,Cloumn1
1,FG
2,PR FG RT
3,FG BR UP DR ST"
df <- read.table(text=t, header = T, sep=',', stringsAsFactors=F)
# The interesting part
df %>%
transform( # trasforms each string in an array
Cloumn1 = strsplit(Cloumn1, " ")
) %>%
unnest(Cloumn1) %>% # for each string in Cloumn1 creates a row
mutate(v = 1) %>% # let's add a dummy 1
spread(Cloumn1, v, fill= 0) # rows become columns and NA is replaced by 0
唯一克隆1 FG 2 PR FG RT 3 FG BR UP DR ST。。。。