我有一個大的數據幀df
這樣的字符串更新:對各組數據幀
firstname = c("John L", "Robert C", "John", "J L", "Tom F", "T F", "Tom")
lastname = c("Doe", "Doe", "Doe", "Doe", "Frost", "Frost", "Frost")
id = c(178, 649, 384, 479, 539, 261, 347)
df = data.frame(firstname, lastname, id)
其中如下看起來df
觀點:
firstname lastname id
John L Doe 178
Robert C Doe 649
John Doe 384
J L Doe 479
Tom F Frost 539
T F Frost 261
Tom Frost 347
正如你看到的,在名字數據幀不一致。有時它只是一個例子。我想要有一致的名字。我想有一個像這樣的輸出數據幀:
firstname lastname id
John L Doe 178
Robert C Doe 649
John L Doe 384
John L Doe 479
Tom F Frost 539
Tom F Frost 261
Tom F Frost 347
我試圖像由姓分組,然後讓最長的字符串爲每個組,然後更新姓名的幾種方法中,如果通過與其他姓名匹配ELSEIF聲明使用以下
> sapply(strsplit("John L Doe"," "), function(a) paste(a[1],a[3]))
[1] "John Doe"
> sapply(strsplit("John L Doe"," "), function(a) paste(substr(a[1],1,1),a[2],a[3]))
[1] "J L Doe"
,因爲我意識到該組中服用最長的字符串它沒有工作組中是不是一個好方法。
非常感謝先進的任何支持,並指導解決這個問題。
編輯:向問題添加更多信息。
從firstname
的首字母縮寫到firstname
的完整格式總是會是正確的。例如,將會有「John L Doe」。但是,他將在他的firstname
中有3個變種。例如,「John L」,「John」和「J L」。這是因爲這些是作者列入非常狹窄的主題。我想修正的名稱格式有一個不一致的地方。擁有一個一致的名字將有助於我在更廣泛的範圍內進行更多的分析。所以,我期待在R
的解決方案來做到這一點。
在您的實際問題的背景下,如何你就會知道,約翰和約翰大號指的是同一個人?如果我有Jack L Doe,J L Doe會映射到誰? – Jean
是否有人姓氏相同,如果你匹配首字母縮寫以轉換爲長格式,你知道他們正在映射到正確的人嗎?編輯說,@沃特林更清楚地表達了我的擔憂。 – Djork
@waterling我的數據框很窄。所以,無論何時,例如,J L Doe都會映射到John L Doe,而不是Jack L Doe – Santosh