gpt4 book ai didi

r - 在R中合并具有特定条件的两个数据帧

转载 作者:行者123 更新时间:2023-12-02 08:06:50 26 4
gpt4 key购买 nike

我有两个数据框:

df1
Syllable Duration Pitch
@ 0.08 93
@ 0.05 107
@ 0.13 56
@ 0.07 95
@ 0.07 123

df2
Syllable Duration
@ 0.08
@ 0.05
@ 0.07
@ 0.07

我想将它们合并到另一个数据框中:

df3
Syllable Duration Pitch
@ 0.08 93
@ 0.05 107
@ 0.07 95
@ 0.07 123

问题是我重复了 Syllable 和 Duration 值。我试过这段代码,但它给了我不正确的音调:

df3 <- merge(df2, df1[!duplicated(df1$Syllable),], by="Syllable")

df3
Syllable Duration Pitch
@ 0.08 93
@ 0.05 93
@ 0.07 93
@ 0.07 93

最佳答案

使用 data.table 你可以:

library("data.table")
df1 <- fread(
"Syllable Duration Pitch
@ 0.08 93
@ 0.05 107
@ 0.13 56
@ 0.07 95
@ 0.07 123")
df2 <- fread(
"Syllable Duration
@ 0.08
@ 0.05
@ 0.07
@ 0.07")
merge(df1, unique(df2))
# > merge(df1, unique(df2))
# Syllable Duration Pitch
# 1: @ 0.05 107
# 2: @ 0.07 95
# 3: @ 0.07 123
# 4: @ 0.08 93

或不排序:

merge(df1, unique(df2), sort=FALSE)
# > merge(df1, unique(df2), sort=FALSE)
# Syllable Duration Pitch
# 1: @ 0.08 93
# 2: @ 0.05 107
# 3: @ 0.07 95
# 4: @ 0.07 123

这最后一个是一样的:

df1[unique(df2), on=c("Syllable", "Duration")]
# > df1[unique(df2), on=c("Syllable", "Duration")]
# Syllable Duration Pitch
# 1: @ 0.08 93
# 2: @ 0.05 107
# 3: @ 0.07 95
# 4: @ 0.07 123

基于R:

df1 <- read.table(header=TRUE, text=
"Syllable Duration Pitch
@ 0.08 93
@ 0.05 107
@ 0.13 56
@ 0.07 95
@ 0.07 123")

df2 <- read.table(header=TRUE, text=
"Syllable Duration
@ 0.08
@ 0.05
@ 0.07
@ 0.07 ")
merge(df1, unique(df2))
merge(df1, unique(df2), sort=FALSE)

关于r - 在R中合并具有特定条件的两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50698889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com