我有一个由行组成的列,所有行都包含由“,”分隔的许多不同元素。此多值属性列(候选扇区)包含每个单元格中的许多元素(AE、AE、PPP、LSE、D、G、D、AE),以逗号分隔。如图所示:
PROJEX_ID <- c("1","2","3","4")
NAME <- c("Hi", "go", "the", "dart")
CANDIDATE_SECTORS <- c("AE, PPP, AE, D", "PPP, D, G, D", "LSE, PPP, PPP", "G, D, H, D, G, G")
PROJ_DATA <- data.frame(PROJEX_ID, NAME, CANDIDATE_SECTORS)
PROJ_DATA$SECTOR_CAPABLE <- ""
我需要计算每个单元格中每个元素的数量,然后逐行存储最频繁出现的值。(例如,AE代表第1行,D代表第2行)等。如有任何帮助,将不胜感激。
所需结果的示例显示在SECTOR\u-CAPABLE列中,其中“AE”存储在SECTOR\u-CAPABLE列的第一行中,因为它在该行的候选扇区单元格中出现了两次。
我对R比较陌生,下面的代码就是我正在尝试的;据我所知,它产生了“AE”的统一答案,这是因为for循环计算的是元素在整个列中的所有单元格中出现的次数,。
for(i in 1:nrow(PROJ_DATA)){
CANDIDATE_PROJS_UNLISTED <- setNames(strsplit(as.character(PROJ_DATA$CANDIDATE_SECTORS), ","), PROJ_DATA$PROJEX_ID)
CANDIDATE_PROJS_UNLISTED_TMP <- stack(CANDIDATE_PROJS_UNLISTED)
CANDIDATE_PROJS_UNLISTED_TMP$ORDER <- ave(CANDIDATE_PROJS_UNLISTED_TMP$ind, CANDIDATE_PROJS_UNLISTED_TMP$ind, FUN = seq_along)
candidate_projs_unlisted_tmp <- as.data.frame(table(CANDIDATE_PROJS_UNLISTED_TMP),decreasing=T)
PROJ_DATA$SECTOR_CAPABLE <- head(CANDIDATE_PROJS_UNLISTED$values,1)
}