2017-07-03 20 views
0

我有一個非常大的(800行)OpenRefine數據集。一個單元格包含多個不同的值,但具有一致的結構(請參閱下面的示例),其數據通過與json數組相似的逗號分隔。我想創建一個新的多值列,其中只包含特定類別的元素,例如Creator或Subject。在下面的例子中,我想創建一個名爲Item Creator的新列,其中只包含Dana M. Ashley和John Smith,這兩個列在文本中。到目前爲止,我已經嘗試了表達式forEach(value.split(","), v, v.contains("Creator:")),並且我得到了一個數組來識別包含Creator的段,但我還不知道如何將該字符串文本提取到新列中。幫助將不勝感激。使用多值字段中的選定子字符串創建新列

Publisher: American Federation of Teachers, Creator: Dana M. Ashley, Creator: John Smith, Subject: Prosocial behavior, Subject: Program development, Subject: Behavior problems, Subject: Classroom techniques, Subject: Student behavior, Subject: School culture, Subject: Educational environment, Subject: Positive Behavior Supports, Resource Type: Text, Language: English, Audience: Educator, Format: pdf

回答

0

爲了把這個值在新列中使用的下拉菜單中的當前列(包含合併數據),然後選擇「編輯列 - >在此基礎上添加列列」

如果用GREL公式中的'filter'表達式替換'forEach'表達式,那麼您將獲得創建者列表(在數組中)。爲了存儲這些細胞中,可以加入陣列成一個字符串:

filter(value.split(","), v, v.contains("Creator:")).join("|") 

這應該讓你與創作者名單新列 - 這將需要更多的一些整理刪除「造物主」位得到只是名單列表

+0

謝謝歐文。我並不清楚 - 我瞭解創建新列的過程,但是在那裏,我非常重視從分割中獲取真實的數組項,並將它們轉換爲相關新列中的文本。以下是我使用我列出的GREL公式時在預覽中顯示的示例。 - '[錯誤,真實,真實,假,假,假,假,假,假,假,假,假,假,假,假,假,假,假,假] – user3206

+0

如果您在GREL中使用'過濾器'來代替'forEach',您將獲得值而不是真/假 –

+0

這就是我正在尋找的答案。非常感謝。 – user3206

相關問題