Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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 如何使用dcast()函数保持NA值? df_R - Fatal编程技术网

R 如何使用dcast()函数保持NA值? df

R 如何使用dcast()函数保持NA值? df,r,R,在第一个示例中,未调用fun.aggregate,但在第二个示例中,更改是调用fun.aggregate。根据?dcast r <- read.csv("ratings.csv") m <- read.csv("movies.csv") rm <- merge(ratings, movies, by="movieId") umr <- dcast(rm, userId ~ title, value.var = "rating", fun.aggregate= sum)

在第一个示例中,未调用
fun.aggregate
,但在第二个示例中,更改是调用
fun.aggregate
。根据
?dcast

r <- read.csv("ratings.csv")
m <- read.csv("movies.csv")
rm <- merge(ratings, movies, by="movieId")
umr <- dcast(rm, userId ~ title, value.var = "rating", fun.aggregate= sum)
fill-用于填充结构缺失的值,默认为将fun.aggregate应用到0长度向量的值

请注意,这里的每个组合只有一个元素,因此
和将返回相同的值,但如果不存在特定组合,则返回0。它基于
sum

dcast(df, x ~ y, value.var = "z", fun.aggregate = NULL)
# x  A  B  C  D
#1 1  3  2  1 NA
#2 2  4  2 NA NA
#3 3  3  2 NA  1
#4 4 NA  2 NA NA
#5 5 NA NA  3  4

dcast(df, x ~ y, value.var = "z", fun.aggregate = sum)
#  x A B C D
#1 1 3 2 1 0
#2 2 4 2 0 0
#3 3 3 2 0 1
#4 4 0 2 0 0
#5 5 0 0 3 4
或者,当所有元素都是
NA
时,如果我们使用
NA.rm
,将没有任何元素可求和,那么它也将进入
整数(0)
模式

length(integer(0))
#[1] 0
sum(integer(0))
#[1] 0

sum(NULL)
#[1] 0
如果我们使用
hablar
中的
sum\uu
,此行为将更改为返回
NA

sum(c(NA, NA), na.rm = TRUE)
#[1] 0
library(hablar)
sum_(c(NA, NA))
#[1] NA

一个选项是在
fun.aggregate
中创建一个条件以返回
NA

sum(c(NA, NA), na.rm = TRUE)
#[1] 0
library(hablar)
sum_(c(NA, NA))
#[1] NA
有关如何创建
sum
(基本函数)的更多信息,请查看源代码

dcast(df, x ~ y, value.var = "z", 
   fun.aggregate = function(x) if(length(x) == 0) NA_real_ else sum(x, na.rm = TRUE))
#  x  A  B  C  D
#1 1  3  2  1 NA
#2 2  4  2 NA NA
#3 3  3  2 NA  1
#4 4 NA  2 NA NA
#5 5 NA NA  3  4