这是数据集。
library(data.table)
x <- structure(list(id = c("A", "B" ),
segment_stemming = c("[('Brownie', 'Noun'), ('From', 'Josa'), ('Pi', 'Noun')]",
"[('Dung-caroon-gye', 'Noun'), ('in', 'Josa'), ('innovation', 'Noun')]" )),
row.names = c(NA, -2L),
class = c("data.table", "data.frame" ))
x
# id segment_stemming
# 1: A [('Brownie', 'Noun'), ('From', 'Josa'), ('Pi', 'Noun')]
# 2: B [('Dung-caroon-gye', 'Noun'), ('in', 'Josa'), ('innovation', 'Noun')]
我想把元组分成行。这是我的预期结果。
id segment_stemming
A ('Brownie', 'Noun')
A ('From', 'Josa')
A ('Pi', 'Noun')
B ('Dung-caroon-gye', 'Noun')
B ('in', 'Josa')
B ('innovation', 'Noun')
我用R搜索了元组格式,但找不到任何线索来得出结果。
下面是另一个可能的选择:
library(data.table)
dt <- structure(list(id = c("A", "B" ), segement_stemming = c("[('Brownie', 'Noun'), ('From', 'Josa'), ('Pi', 'Noun')]", "[('Dung-caroon-gye', 'Noun'), ('in', 'Josa'), ('innovation', 'Noun')]" )), row.names = c(NA, -2L), class = c("data.table", "data.frame" ))
dt2 <- dt[, c(segement_stemming = strsplit(segement_stemming, "(?<=[^']),", perl = TRUE)), by = id]
dt2[, names(dt2) := lapply(.SD, function(x) gsub("\\[|\\]", "", x))]
dt2
#> id segement_stemming
#> 1: A ('Brownie', 'Noun')
#> 2: A ('From', 'Josa')
#> 3: A ('Pi', 'Noun')
#> 4: B ('Dung-caroon-gye', 'Noun')
#> 5: B ('in', 'Josa')
#> 6: B ('innovation', 'Noun')
由reprex包(v2.0.1)创建于2022-03-11
下面是一种使用分隔行
的方法:
library(tidyverse)
x %>%
mutate(segment_stemming = gsub("\\[|\\]", "", segment_stemming)) %>%
separate_rows(segment_stemming, sep = ",\\s*(?![^()]*\\))")
# A tibble: 6 x 2
id segment_stemming
<chr> <chr>
1 A ('Brownie', 'Noun')
2 A ('From', 'Josa')
3 A ('Pi', 'Noun')
4 B ('Dung-caroon-gye', 'Noun')
5 B ('in', 'Josa')
6 B ('innovation', 'Noun')
获得更好结果的一种方法是进行一些操作(unnest_-wide
)。
x %>%
mutate(segment_stemming = gsub("\\[|\\]", "", segment_stemming)) %>%
separate_rows(segment_stemming, sep = ",\\s*(?![^()]*\\))") %>%
mutate(segment_stemming = segment_stemming %>%
str_remove_all("[()',]") %>%
str_split(" ")) %>%
unnest_wider(segment_stemming)
# A tibble: 6 x 3
id ...1 ...2
<chr> <chr> <chr>
1 A Brownie Noun
2 A From Josa
3 A Pi Noun
4 B Dung-caroon-gye Noun
5 B in Josa
6 B innovation Noun
这里有一个使用数据的选项。表格
网状
library(reticulate)
library(data.table)
setDT(x)[
,
segment_stemming := gsub("(\\(.*?\\))", '\"\\1\"', segment_stemming)
][
,
lapply(.SD, py_eval),
id
]
这给了
id segment_stemming
1: A ('Brownie', 'Noun')
2: A ('From', 'Josa')
3: A ('Pi', 'Noun')
4: B ('Dung-caroon-gye', 'Noun')
5: B ('in', 'Josa')
6: B ('innovation', 'Noun')
另一个数据。表
使用strsplit的选项trimws
如下
library(data.table)
setDT(x)[
,
.(segment_stemming = trimws(
unlist(strsplit(segment_stemming, "(?<=\\)),\\s+(?=\\()", perl = TRUE)),
whitespace = "\\[|\\]"
)),
id
]
给予
id segment_stemming
1: A ('Brownie', 'Noun')
2: A ('From', 'Josa')
3: A ('Pi', 'Noun')
4: B ('Dung-caroon-gye', 'Noun')
5: B ('in', 'Josa')
6: B ('innovation', 'Noun')
一些基本的R选项也应该起作用
with(
x,
setNames(
rev(
stack(
tapply(
segment_stemming,
id,
function(v) {
trimws(
unlist(strsplit(v, "(?<=\\)),\\s+(?=\\()", perl = TRUE)),
whitespace = "\\[|\\]"
)
}
)
)
),
names(x)
)
)
或者
with(
x,
setNames(
rev(
stack(
setNames(
regmatches(segment_stemming, gregexpr("\\(.*?\\)", segment_stemming)),
id
)
)
),
names(x)
)
)
我对pig是新手,在解析输入并将其转换成可以使用的格式时遇到了问题。输入文件包含同时具有固定字段和KV对的行,如下所示: FF1FF2FF3FF4KVP1KVP2...KVPN 完成后,我希望能够生成以下结果(在这一点上,输出格式并不重要,我只是向您展示我希望的结果): 似乎我应该可以通过分组固定场并将一袋KV对拉平来生成交叉积来做到这一点 我试着用这样的东西读这篇文章: 虽然这让我得到了我想要的
我有一个大型多维数组(约1900万个元素),其中包含多个不同属性的联合概率。 数组非常稀疏,我只对概率非零的单元格感兴趣。 但是,在筛选数组中的非零元素时,我无法检索筛选值的维度名称(对应于各种属性值)。 以下是一个玩具示例: 我可以获得与某个标准匹配的单元格的索引值(此处, 但我无法使用上述索引值并找出它们是什么水果组合,因为在查找特定单元格值时,DIMNAME会被删除: 我尝试将数组转换为da
问题内容: 我偶然发现以下代码: 我不明白’i,a’位,并且在Google上搜索有关’for’的信息是一种痛苦,当我尝试使用该代码尝试时,我得到了错误: :需要多个值才能解压 有谁知道它的作用或与之有关的事情,可以通过谷歌了解更多信息吗? 问题答案: 你可以通过Google搜索“元组拆箱”。可以在Python的各个地方使用它。最简单的是分配 在for循环中,其工作原理类似。如果iterable的每
我正在尝试为每个组标记。这是数据集。 结构(列表(组=结构(c(1L,1L,2L,1LL,2L、1L,4L,1L,1L、2L,2L,2L),.Label=c(“p01”,“p02”),class=“factor”)),class=“data.frame”,行。名称=c(NA,-12L)) 这是预期表。在p01的情况下,预期列是从1-4中的1,然后是从6-8中的2,从11-12中的3,用于考虑连续模
我的代码有一个特殊的问题。 然后它会发生在图像上出现的事情。我需要汉字列是CENTER对齐,但出于某种原因,'tcr,不工作,因为它应该是,但默认渲染器正在做它应该是。 有什么建议/帮助吗?
问题内容: 在Swift中,有一个通用的模式可以用来解开可选项: 我目前正在执行这种模式匹配,但是在切换情况下使用元组,其中两个参数都是可选的: 但是,此打印: 有没有一种方法可以使我的选配和模式匹配不为零而展开?目前,我的解决方法是: 问题答案: 您可以使用以下模式: 只是的快捷方式,因此等效于