对于 Col 2 中的值,将 Col 1 中的所有值替换为 Col 1 中的第一次出现
For value in Col 2, replace all values in Col 1 with first occurrence in Col 1
我正在清理一个大型数据集,第 1 列有几个公司名称的拼写。第 2 列中的公司 ID 在所有公司拼写中都是相同的,因此我想搜索公司 ID 并将所有公司拼写替换为第一个拼写(哪个不重要)。
我是 R 和 data.table 语法的新手,但曾尝试遍历公司 ID 并使用 setDT 替换公司名称值。但是,我无法弄清楚如何仅将那些共享相同公司 ID 的公司替换为公司名称拼写的第一个实例。
这是我目前所在的位置:
library(data.table)
#Sample Datatable
CompanyDT <- data.table(Company_Name=c("Froklo","Forklo","Forlko","Corp3","Grap","Garp"), Company_ID=c(1,1,1,2,3,3))
# Company_Name Company_ID
#1: Froklo 1
#2: Forklo 1
#3: Forlko 1
#4: Corp3 2
#5: Grap 3
#6: Garp 3
我正在处理的循环
for(j in CompanyDT[,.(Company_ID)])
FirstFacName <- CompanyDT[Company_ID[j], Company_Name]
setDT(CompanyDT)[, Company_Name:=FirstFacName]
我想要这个结果,第一个拼写实例替换所有具有相同公司 ID 的公司名称:
# Company_Name Company_ID
#1: Froklo 1
#2: Froklo 1
#3: Froklo 1
#4: Corp3 2
#5: Grap 3
#6: Grap 3
但我得到了这个结果,table 中的第一个公司名称替换了所有公司名称,而不管公司 ID:
# Company_Name Company_ID
#1: Froklo 1
#2: Froklo 1
#3: Froklo 1
#4: Froklo 2
#5: Froklo 3
#6: Froklo 3
dplyr
方法是:
library(dplyr)
CompanyDT %>%
group_by(Company_ID) %>%
mutate(Company_Name_new = first(Company_Name))
# A tibble: 6 x 3
# Groups: Company_ID [3]
Company_Name Company_ID Company_Name_new
<chr> <dbl> <chr>
1 Froklo 1 Froklo
2 Forkslo 1 Froklo
3 Forlko 1 Froklo
4 Corp3 2 Corp3
5 Grap 3 Grap
6 Garp 3 Grap
我正在清理一个大型数据集,第 1 列有几个公司名称的拼写。第 2 列中的公司 ID 在所有公司拼写中都是相同的,因此我想搜索公司 ID 并将所有公司拼写替换为第一个拼写(哪个不重要)。
我是 R 和 data.table 语法的新手,但曾尝试遍历公司 ID 并使用 setDT 替换公司名称值。但是,我无法弄清楚如何仅将那些共享相同公司 ID 的公司替换为公司名称拼写的第一个实例。
这是我目前所在的位置:
library(data.table)
#Sample Datatable
CompanyDT <- data.table(Company_Name=c("Froklo","Forklo","Forlko","Corp3","Grap","Garp"), Company_ID=c(1,1,1,2,3,3))
# Company_Name Company_ID
#1: Froklo 1
#2: Forklo 1
#3: Forlko 1
#4: Corp3 2
#5: Grap 3
#6: Garp 3
我正在处理的循环
for(j in CompanyDT[,.(Company_ID)])
FirstFacName <- CompanyDT[Company_ID[j], Company_Name]
setDT(CompanyDT)[, Company_Name:=FirstFacName]
我想要这个结果,第一个拼写实例替换所有具有相同公司 ID 的公司名称:
# Company_Name Company_ID
#1: Froklo 1
#2: Froklo 1
#3: Froklo 1
#4: Corp3 2
#5: Grap 3
#6: Grap 3
但我得到了这个结果,table 中的第一个公司名称替换了所有公司名称,而不管公司 ID:
# Company_Name Company_ID
#1: Froklo 1
#2: Froklo 1
#3: Froklo 1
#4: Froklo 2
#5: Froklo 3
#6: Froklo 3
dplyr
方法是:
library(dplyr)
CompanyDT %>%
group_by(Company_ID) %>%
mutate(Company_Name_new = first(Company_Name))
# A tibble: 6 x 3
# Groups: Company_ID [3]
Company_Name Company_ID Company_Name_new
<chr> <dbl> <chr>
1 Froklo 1 Froklo
2 Forkslo 1 Froklo
3 Forlko 1 Froklo
4 Corp3 2 Corp3
5 Grap 3 Grap
6 Garp 3 Grap