创建一个列,该列具有基于ID列的一列的可能值

时间:2019-09-04 13:39:08

标签: r

我是新来的,所以我尝试按照指导原则使这种解释和解释尽可能简单,但对我犯的任何错误或礼节性的笨拙行为表示歉意,尽管我已尝试避免它们-我正在学习!

因此在R中,我有两列,ID和Area。这些都不是唯一值。有时ID会匹配多个区域,如下面的“ ABC”所示。

var elem = document.getElementById("input");
elem.onkeydown =  function (e) {
    if (e.keyCode === 13) {  //checks whether the pressed key is "Enter"
       checkInput();
    }
};

如何创建第三列,该列将每个ID的Area的所有可能条目连接起来,所以看起来像这样:

data.frame(ID=c("ABC", "def", "ghi", "ABC", "jkl", "jkl"),
Area=c("area1", "area2", "area3", "area4", "area5", "area5"))

我将非常感谢我对此提供的任何帮助。我正在使用DataCamp学习R,但到目前为止还没有!!

编辑:我应该说我需要串联以便仅包括所有可能的UNIQUE值,即ID ==“ jkl”下的条目在AreaComb中应仅具有“ area5”,而不能具有“ area5&area5”等。

3 个答案:

答案 0 :(得分:1)

使用dplyr,我们可以group_by IDpaste Area一起为每个组。

library(dplyr)

df %>%
  group_by(ID) %>%
  mutate(AreaComb = paste(unique(Area), collapse = " & "))

#   ID    Area  AreaComb     
#  <fct> <fct> <chr>        
#1 ABC   area1 area1 & area4
#2 def   area2 area2        
#3 ghi   area3 area3        
#4 ABC   area4 area1 & area4
#5 jkl   area5 area5       

数据

df <- data.frame(ID=c("ABC", "def", "ghi", "ABC", "jkl", "jkl"),
       Area=c("area1", "area2", "area3", "area4", "area5", "area5"))

答案 1 :(得分:1)

我们可以使用tidyverse

library(dplyr)
library(stringr)
df %>%
   group_by(ID) %>%
   mutate(AreaComb = str_c(Area, collapse = " & "))
# A tibble: 5 x 3
# Groups:   ID [4]
#  ID    Area  AreaComb     
#  <fct> <fct> <chr>        
#1 ABC   area1 area1 & area4
#2 def   area2 area2        
#3 ghi   area3 area3        
#4 ABC   area4 area1 & area4
#5 jkl   area5 area5        

或与data.table

library(data.table)
setDT(df)[, AreaComb := paste(Area, collapse= " & "), by = ID]

数据

df <- data.frame(ID=c("ABC", "def", "ghi", "ABC", "jkl"),
             Area=c("area1", "area2", "area3", "area4", "area5")) 

答案 2 :(得分:1)

确保您的字符串是字符(即非因数),并使用import com.sun.jersey.core.header.FormDataContentDisposition; import com.sun.jersey.multipart.FormDataParam; ,即

import org.glassfish.jersey.media.multipart.FormDataBodyPart;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.FormDataParam;