簡體   English   中英

如何根據R中的索引更改data.frame中的列?

[英]How to change a column inside a data.frame based on a index in R?

我有一個包含兩列的data.frame:Name和Index以及200萬行。

我確信所有索引都寫得正確,但我需要驗證“名稱”列。

如何根據索引值更改所有名稱值。

讓我舉個例子吧。 假設我們有以下data.frame'db':

db
Index Name
1      Carlos
2      John
3      Bill
4      Mary
1      Cerlas

如圖所示,每個Index值的'Name'應相等,但有人寫錯了。

我該如何糾正? 是否有采用'dplyr'或'tidyr'的解決方案?

我嘗試了以下代碼,但它沒有奏效。

for (i in unique(db$Index)) {
    db$Nome[db$Index==i] <- db$Nome[db$Index==i][1]
}

謝謝

如果有人為每個'Index'的'Name'中的第一個元素正確命名它,我們可以使用data.table將'Name'指定為'Name'的第一個元素,按'Index'分組。

library(data.table)
setDT(db)[, Name:= Name[1L], by = Index]

你可以在dplyr中做到這一點。 在這里,我們為每個索引指定整個索引名稱的第一個名稱:

library(dplyr)
dat %>% group_by(Index) %>%
        mutate(Name = Name[1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM