如何替换r中的空单元格
我在R中有一个data.frame,希望以特定的方式填充一些空单元格。下面是表格如何替换r中的空单元格,r,csv,dataframe,replace,R,Csv,Dataframe,Replace,我在R中有一个data.frame,希望以特定的方式填充一些空单元格。下面是表格 Case.ID | Resource ----------------------- 1 | 501 ----------------------- 1 | ----------------------- 1 | 0 ----------------------- 1 | --------------------
Case.ID | Resource
-----------------------
1 | 501
-----------------------
1 |
-----------------------
1 | 0
-----------------------
1 |
-----------------------
2 | 524
-----------------------
这里,我想将空单元格替换为每个CASE的第一个值。ID,在这种情况下,用Cas.ID=1替换为空的单元格为501,而不是0。
< P>假设文件中的空白空间被导入为<代码> Na <代码>,这将使用<代码> DPLYR 。library(dplyr)
# Create data frame to match post
df <- data.frame(Case.ID = c(1, 1, 1, 1, 2),
Resource = c(501, NA, 0, NA, 524))
df <- df %>%
group_by(Case.ID) %>%
mutate(Resource = if_else(is.na(Resource), head(Resource, 1), Resource))
df
# Case.ID Resource
# <dbl> <dbl>
# 1 501
# 1 501
# 1 0
# 1 501
# 2 524
库(dplyr)
#创建数据帧以匹配post
df%
变异(Resource=if_else(is.na(Resource),head(Resource,1),Resource))
df
#Case.ID资源
#
# 1 501
# 1 501
# 1 0
# 1 501
# 2 524
<代码> > p>假设文件中的空白空间被导入为<代码> NA >代码>,这将使用<代码> DPLYR
library(dplyr)
# Create data frame to match post
df <- data.frame(Case.ID = c(1, 1, 1, 1, 2),
Resource = c(501, NA, 0, NA, 524))
df <- df %>%
group_by(Case.ID) %>%
mutate(Resource = if_else(is.na(Resource), head(Resource, 1), Resource))
df
# Case.ID Resource
# <dbl> <dbl>
# 1 501
# 1 501
# 1 0
# 1 501
# 2 524
库(dplyr)
#创建数据帧以匹配post
df%
变异(Resource=if_else(is.na(Resource),head(Resource,1),Resource))
df
#Case.ID资源
#
# 1 501
# 1 501
# 1 0
# 1 501
# 2 524
您可以在基本R中使用替换
with(df, ave(v2, v1, FUN = function(i) replace(i, i == '', i[1])))
您可以在base R中使用replace
with(df, ave(v2, v1, FUN = function(i) replace(i, i == '', i[1])))
我们可以使用data.table
library(data.table)
setDT(df1)[, v1 := Resource[1L], Case.ID][is.na(Resource), Resource := v1][, v1 := NULL][]
或者另一个选项是na.aggregate
library(zoo)
setDT(df)[, Resource := na.aggregate(Resource, FUN = function(x) x[1]), Case.ID]
我们可以使用data.table
library(data.table)
setDT(df1)[, v1 := Resource[1L], Case.ID][is.na(Resource), Resource := v1][, v1 := NULL][]
或者另一个选项是na.aggregate
library(zoo)
setDT(df)[, Resource := na.aggregate(Resource, FUN = function(x) x[1]), Case.ID]
一旦你把它导入R(比如说df
),空的就被转换成NA。因此:
Case.ID Resource
1 1 501
2 1 NA
3 1 0
4 1 NA
5 2 524
因此:
df$Resource<-ifelse(is.na(df$Resource),df$Case.ID,df$Resource)
一旦你把它导入R(比如说df
),空的就被转换成NA。因此:
Case.ID Resource
1 1 501
2 1 NA
3 1 0
4 1 NA
5 2 524
因此:
df$Resource<-ifelse(is.na(df$Resource),df$Case.ID,df$Resource)
请看一下这些关于如何制作a的技巧,以及上的这篇文章。也许下面的提示也值得一读。只需使用is.na
即库(data.table);setDT(df1)[,v1:=Resource[1L],Case.ID][is.na(Resource),Resource:=v1][,v1:=NULL][
请看一下这些关于如何生成a的技巧,以及上的这篇文章。也许下面的提示也值得一读。只需使用is.na
即库(data.table);setDT(df1)[,v1:=Resource[1L],Case.ID][is.na(Resource),Resource:=v1][,v1:=NULL][
您可以使用第一(Resource)
而不是head()
您当然是对的。显然需要更多的咖啡你可以使用first(资源)
而不是head()
你当然是对的。显然需要更多的咖啡