Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何替换r中的空单元格_R_Csv_Dataframe_Replace - Fatal编程技术网

如何替换r中的空单元格

如何替换r中的空单元格,r,csv,dataframe,replace,R,Csv,Dataframe,Replace,我在R中有一个data.frame,希望以特定的方式填充一些空单元格。下面是表格 Case.ID | Resource ----------------------- 1 | 501 ----------------------- 1 | ----------------------- 1 | 0 ----------------------- 1 | --------------------

我在R中有一个data.frame,希望以特定的方式填充一些空单元格。下面是表格

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()
你当然是对的。显然需要更多的咖啡