R 基于可变条件向数据帧添加假数据
下午好 每当一个特定变量缺少几个给定的间隔时,我必须向数据帧添加虚拟数据R 基于可变条件向数据帧添加假数据,r,if-statement,dataframe,R,If Statement,Dataframe,下午好 每当一个特定变量缺少几个给定的间隔时,我必须向数据帧添加虚拟数据 require(plyr) df <- data.frame(length = c(1.5e+07, 2.5e+07), grade = c(1000, 1000), company = "TEST") for(x in df$length){ if (x<=0|x>1e+07) { df <- rbind.fill(df, data.frame(length = c(5000000), grade
require(plyr)
df <- data.frame(length = c(1.5e+07, 2.5e+07), grade = c(1000, 1000), company = "TEST")
for(x in df$length){
if (x<=0|x>1e+07) {
df <- rbind.fill(df, data.frame(length = c(5000000), grade = c(1000)))
}
require(plyr)
df您可以使用dplyr
和tidyr
来完成
首先,缩短df$长度:
df <- data.frame(length = c(1.5e+07, 2.5e+07), grade = c(1000, 1000), company = "TEST")
df$length <- cut(df$length, breaks = seq(0, 1e+08, 1e+07))
您可以使用dplyr
和tidyr
来执行此操作
首先,缩短df$长度:
df <- data.frame(length = c(1.5e+07, 2.5e+07), grade = c(1000, 1000), company = "TEST")
df$length <- cut(df$length, breaks = seq(0, 1e+08, 1e+07))
我们猜不出…
是什么意思。你应该发布完整的代码,或者至少关闭括号,这样我们就知道了。谢谢你的回复。我的意思是我不知道如何继续这个代码,所以我试图在下面的段落中解释我的问题。我通过添加括号进行了更正。我们猜不出…
应该是什么意思。你应该发布完整的代码,或者至少关闭括号,这样我们就知道了。谢谢你的回复。我的意思是我不知道如何继续这个代码,所以我试图在下面的段落中解释我的问题。我通过添加括号进行了更正。谢谢您的回复。我必须等到我能够下载dplyr和tidyr,但我觉得它会起作用。但是我犯了错误,对于我的df,“等级”值不同于“1000”(介于-5和5之间),但看起来这无关紧要。好的,我想我明白发生了什么。但是,我希望将这些值添加到原始df中,而不是“仅”在新的数据帧中显示它们。如果我尝试df%%>%left_join(data.frame(length=levels(df$length)),)%%>%complete(length,company)%%>%filter(!is.na(company))%%>%mutate(grade=ifelse(is.na(grade),1000,grade)),它会将它们添加到上面-例如:df谢谢!我会证实你的答案。顺便说一句,我的“真实”数据框只包含几个不需要修改或添加值的列,但我认为我仍然应该在这个脚本的某个地方添加它们。我应该只修改dataframe和complete()参数吗?再次感谢您,如果之前没有值,那么额外的列将具有NA。如果您想要其他内容,请查看?complete
中的fill
参数,谢谢您的回复。我必须等到我能够下载dplyr和tidyr,但我觉得它会起作用。但是我犯了错误,对于我的df,“等级”值不同于“1000”(介于-5和5之间),但看起来这无关紧要。好的,我想我明白发生了什么。但是,我希望将这些值添加到原始df中,而不是“仅”在新的数据帧中显示它们。如果我尝试df%%>%left_join(data.frame(length=levels(df$length)),)%%>%complete(length,company)%%>%filter(!is.na(company))%%>%mutate(grade=ifelse(is.na(grade),1000,grade)),它会将它们添加到上面-例如:df谢谢!我会证实你的答案。顺便说一句,我的“真实”数据框只包含几个不需要修改或添加值的列,但我认为我仍然应该在这个脚本的某个地方添加它们。我应该只修改dataframe和complete()参数吗?再次感谢您,如果之前没有值,那么额外的列将具有NA。如果您想要其他内容,请查看?complete
中的fill
参数
library(dplyr)
library(tidyr)
df %>% left_join(data.frame(length = levels(df$length)), .) %>%
complete(length, company) %>%
filter(!is.na(company)) %>%
mutate(grade = ifelse(is.na(grade), 1000, grade))
Source: local data frame [10 x 3]
length company grade
(fctr) (fctr) (dbl)
1 (0,1e+07] TEST 1000
2 (1e+07,2e+07] TEST 1000
3 (2e+07,3e+07] TEST 1000
4 (3e+07,4e+07] TEST 1000
5 (4e+07,5e+07] TEST 1000
6 (5e+07,6e+07] TEST 1000
7 (6e+07,7e+07] TEST 1000
8 (7e+07,8e+07] TEST 1000
9 (8e+07,9e+07] TEST 1000
10 (9e+07,1e+08] TEST 1000