我正在处理带有标签特征的产品数据集。就是说,它们具有一个属性,该属性包含在逗号分隔的单词列表中。例如,
text = textfeldEingabe.get('1.0', 'end').strip()
text = str(text)
print(text)
text = bytes(text.encode())
print(text)
startEntschluesselung = False
try:
dEntschluesselung = int(entryPrivaterKey.get())
nEntschluesselung = int(entryNEntschluesselung.get())
startEntschluesselung = True
except:
messagebox.showerror('Eingabefehler', 'Geben Sie für n, Blocklaenge und private Key ganze Zahlen ein')
if startEntschluesselung:
textEntschluesselt = verschluesseln(text, (dEntschluesselung, nEntschluesselung))
textfeldAusgabe.config(state='normal')
textfeldAusgabe.delete('1.0', 'end')
textfeldAusgabe.insert('1.0', textEntschluesselt)
textfeldAusgabe.config(state='disabled')
我想将标签列分为每个标签的不同逻辑列,即
data.frame(
id = c(11, 12, 13),
tags =c("wood,small,old","big,iron,artistic", "pretty,wood")
)
我尝试使用| id | wood | iron | small | big | old | artistic | pretty |
------------------------------------------------------------
| 11 | TRUE| FALSE| TRUE| FALSE| TRUE| FALSE| FALSE|
| 12 | FALSE| TRUE| FALSE| TRUE| FALSE| TRUE| FALSE|
| 13 | TRUE| FALSE| FALSE| FALSE| FALSE| FALSE| TRUE|
包中的separate
函数,但是标记是无序的,因此很难为每个标记创建一列。
我找到了一种使用tidyr
包中的mutate
并为每个标签手动创建一列的解决方案,
dplyr
但是新标签可能会在将来出现,我希望使其具有可扩展性。
¿有什么方法可以轻松做到吗?
答案 0 :(得分:4)
您可以这样做:
select s.geom.sdo_srid, count(*)
from objekt_stup s
group by s.geom.sdo_srid ;
以R为基数,它需要一些步骤:
library(tidyverse)
df %>%
separate_rows(tags) %>%
mutate(val = TRUE) %>%
spread(tags, val, FALSE)
id artistic big iron old pretty small wood
1 11 FALSE FALSE FALSE TRUE FALSE TRUE TRUE
2 12 TRUE TRUE TRUE FALSE FALSE FALSE FALSE
3 13 FALSE FALSE FALSE FALSE TRUE FALSE TRUE
答案 1 :(得分:0)
我们可以使用cSplit_e
中的splitstackshape
创建一个二进制列,然后通过删除前缀来rename
列
library(splitstackshape)
library(dplyr)
library(stringr)
cSplit_e(df1, 'tags', sep=",", type = 'character', fill = 0, drop = TRUE) %>%
mutate_at(-1, as.logical) %>%
rename_at(-1, ~ str_remove(., 'tags_'))
# id artistic big iron old pretty small wood
#1 11 FALSE FALSE FALSE TRUE FALSE TRUE TRUE
#2 12 TRUE TRUE TRUE FALSE FALSE FALSE FALSE
#3 13 FALSE FALSE FALSE FALSE TRUE FALSE TRUE
或更紧凑
library(qdapTools)
cbind(df1[1], mtabulate(strsplit(as.character(df1$tags), ",")))