r - 数据集值替换未产生预期结果
问题描述
我在 R 中有以下两个数据框
df <- data.frame("Z_Frequency" = c(5,10,15,20,25),
"Z_Slope2"=c(0,.7, -0.5,0,.7))
df24 <- data.frame("Z_Frequency" = seq(from = min(df$Z_Frequency),
to = max(df$Z_Frequency), by = 1))
我df24$Z_SSLOPE
通过比较 和 的值来填充列的值df24$Z_Frequency
:df$Z_Frequency
如果 的值与df24$Z_Frequency
的 相同,df$Z_Frequency
则将df24$Z_SSLOPE
从中复制列值df$Z_Slope2
。
我已经为此编写了以下代码循环。
df24$Z_SSLOPE <- 0
for(i in 1:nrow(df)) {
for (j in 1:nrow(df24)) {
if(df24$Z_Frequency[j] == df$Z_Frequency[i]) {
df24$Z_SSLOPE[j] <- df$Z_Slope2[i]
} else
if(df24$Z_Frequency[j] > df$Z_Frequency[i] & df24$Z_Frequency[j] < df$Z_Frequency[i+1]) {
df24$Z_SSLOPE[j] = df$Z_Slope2[df24$Z_Frequency[j] > df$Z_Frequency[i] &
df24$Z_Frequency[j] < df$Z_Frequency[i+1]]
}
}
}
预期输出如下
Z_Frequency Z_SSLOPE
1 5 0.0
2 6 0.7
3 7 0.7
4 8 0.7
5 9 0.7
6 10 0.7
7 11 -0.5
8 12 -0.5
9 13 -0.5
10 14 -0.5
11 15 -0.5
12 16 0.0
13 17 0.0
14 18 0.0
15 19 0.0
16 20 0.0
17 21 0.7
18 22 0.7
19 23 0.7
20 24 0.7
21 25 0.7
如果df24$Z_Frequency
值在 中找不到匹配df$Z_Frequency
项,则这些值将由 的下一个可用匹配项填充df24$Z_Frequency
。我得到以下输出。
Z_Frequency Z_SSLOPE
1 5 0.0
2 6 0.0
3 7 0.0
4 8 0.0
5 9 0.0
6 10 0.7
7 11 0.0
8 12 0.0
9 13 0.0
10 14 0.0
11 15 -0.5
12 16 0.0
13 17 0.0
14 18 0.0
15 19 0.0
16 20 0.0
17 21 0.0
18 22 0.0
19 23 0.0
20 24 0.0
21 25 0.7
if 语句的第一部分有效。但是,我无法在 if 语句的 else 部分发现错误。我请求某人的帮助。
解决方案
如果您对 没有问题dplyr
,我们可以dplyr::left_join
将tidyr::fill
差距向后
library(dplyr)
library(tidyr)
df24 %>%
left_join(df) %>%
fill(Z_Slope2,.direction = 'up')
推荐阅读
- c# - 在场景转换后保留空闲状态
- python - Python replace() 带颜色的字符串?
- javascript - 如何实现类似于 youtube 卡片的上下文菜单?
- javascript - Nivo 响应式水平条 - 数值未显示在 y 轴刻度中
- arrays - 将非常大的一维数组写入工作表
- graphql - GraphQL 查询验证定义与我的实现有何不同?
- python - 如何修复内部服务器错误 Flask nginx
- php - 即使 display_errors=1,PHP lint 也不会显示详细的错误消息
- php - PDO 通过添加更大的 blob 文件失败
- javascript - 为什么 Tabulator rowTapHold 方法不适用于 iOS 设备?