我的数据集不是英文,而是韩文。 观察次数超过3000次。
数据集的名称是demo。
str(demo)
这包含每行中每个人的信息。
$ 거주지역: Factor w/ 900 levels "","강원 강릉시 포남1동",..: 595 235 595 832 12 126 600 321 600 589 ...
以上是数据集的第4列结构。
我想根据第4栏制作小组,表示人的地址。 问题是因子的水平是900.这是因为地址是完全写的。
我想组织一些省份的人员。因此,R需要阅读因素并识别字母以制作小组。
我该怎么做?请给我一个帮助。我用Google搜索了很长时间但我找不到它。
答案 0 :(得分:1)
这可能是一个开始,不确定它将如何与非拉丁字符一起使用。
foo <- data.frame(value=rnorm(3),
address=c("blah blah province1", "blah blah province2", "province3"),
stringsAsFactors=FALSE)
words <- strsplit(foo$address, " ")
words <- do.call(rbind, words)
foo$province <- words[, 3]
head(foo)
输出:
value address province
1 0.01129269 blah blah province1 province1
2 0.99160104 blah blah province2 province2
3 1.59396745 province3 province3
通过South Korean address formats上的这个维基页面猜测,如果城市和省(病房?)总是在地址的开头,那么它会更容易一些,我们可以避免使用rbind
,在上面的代码中回收较短的地址。
foo <- data.frame(value=rnorm(3),
address=c("seoul ward1 street", "seoul ward2 street", "not-seoul ward-something street"),
stringsAsFactors=FALSE)
foo$city <- sapply(foo$address, function(x) strsplit(x, split=" ")[[1]][1])
foo$ward <- sapply(foo$address, function(x) strsplit(x, split=" ")[[1]][2])
现在,如果在首尔和其他城市,我们也可以使用ifelse
来使用病房。
foo$group <- with(foo, ifelse(city=="seoul", ward, city))
foo
value address city ward group
1 1.0071995 seoul ward1 street seoul ward1 ward1
2 0.7192918 seoul ward2 street seoul ward2 ward2
3 -0.6047117 not-seoul ward-something street not-seoul ward-something not-seoul