Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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
根据其他变量的条件,第一个和最后一个非缺失时间点的值。条件合并(dplyr)_R_Dplyr_Conditional Statements_Coalescing - Fatal编程技术网

根据其他变量的条件,第一个和最后一个非缺失时间点的值。条件合并(dplyr)

根据其他变量的条件,第一个和最后一个非缺失时间点的值。条件合并(dplyr),r,dplyr,conditional-statements,coalescing,R,Dplyr,Conditional Statements,Coalescing,a/b/c是不同的变量,t1是时间点1,t2是时间点2,t3是时间点3 其目的是为a_t1到a_t3的每一行创建两个新列:一个列具有first和一个列具有last非缺失值。在变量b和c(在同一时间点)中也不缺失的条件下 我认为coalesce()可以使用某种条件格式。然而,我对这方面的了解有限。最好是tidyverse解决方案,但其他解决方案也可以 library(tidyverse) df<-tibble::tribble( ~a_t1,

a/b/c是不同的变量,t1是时间点1,t2是时间点2,t3是时间点3

其目的是为a_t1到a_t3的每一行创建两个新列:一个列具有first和一个列具有last非缺失值。在变量b和c(在同一时间点)中也不缺失的条件下

我认为
coalesce()
可以使用某种条件格式。然而,我对这方面的了解有限。最好是tidyverse解决方案,但其他解决方案也可以

library(tidyverse)

df<-tibble::tribble(
                       ~a_t1, ~a_t2, ~a_t3, ~b_t1, ~b_t2, ~b_t3, ~c_t1, ~c_t2, ~c_t3,
                           1,    NA,     9,     2,    NA,     6,     3,    NA,     7,
                           2,    NA,     8,    NA,     5,     8,    NA,     1,     8,
                          NA,    NA,     3,     2,    NA,     9,     2,    NA,    22,
                          NA,     5,     9,     4,    NA,     9,     4,     5,    NA,
                          NA,     9,    10,    NA,     6,    11,    NA,     6,    NA
                       )
库(tidyverse)

df使用
dplyr
tidyr
的方法:

library(dplyr)
library(tidyr)

df %>%
  #Create a row number
  mutate(row = row_number()) %>%
  #Get data in long format
  pivot_longer(cols = -row) %>%
  #Separate the data in two columns
  separate(name, c('name1', 'name2'), sep = '_') %>%
  #Group by each row and t1, t2 columns
  group_by(row, name2) %>%
  #Drop groups with all `NA` values
  filter(all(!is.na(value))) %>%
  #For each row get first and last value for "a" columns
  group_by(row) %>%
  summarise(first = first(value[name1 == 'a']), 
            last = last(value[name1 == 'a'])) %>%
  #Complete the data for missing rows.
  complete(row = 1:nrow(df))

#    row first last
#  <int> <dbl> <dbl>
#1     1     1     9
#2     2     8     8
#3     3     3     3
#4     4    NA    NA
#5     5     9     9
库(dplyr)
图书馆(tidyr)
df%>%
#创建一个行号
变异(行=行编号())%>%
#获取长格式的数据
枢轴长度(cols=-行)%>%
#将数据分为两列
单独的(名称,c('name1','name2'),sep='.''''''''>%
#按每行和t1、t2列分组
分组人(行,名称2)%>%
#删除具有所有'NA'值的组
过滤器(所有(!is.na(值)))%>%
#对于每一行,获取“a”列的第一个和最后一个值
分组依据(行)%>%
总结(第一个=第一个(值[name1=='a']),
last=last(值[name1=='a'])%>%
#完成缺少行的数据。
完成(行=1:nrow(df))
#排第一排最后一排
#    
#1     1     1     9
#2     2     8     8
#3     3     3     3
#4娜娜
#5     5     9     9

使用
dplyr
tidyr
的方法:

library(dplyr)
library(tidyr)

df %>%
  #Create a row number
  mutate(row = row_number()) %>%
  #Get data in long format
  pivot_longer(cols = -row) %>%
  #Separate the data in two columns
  separate(name, c('name1', 'name2'), sep = '_') %>%
  #Group by each row and t1, t2 columns
  group_by(row, name2) %>%
  #Drop groups with all `NA` values
  filter(all(!is.na(value))) %>%
  #For each row get first and last value for "a" columns
  group_by(row) %>%
  summarise(first = first(value[name1 == 'a']), 
            last = last(value[name1 == 'a'])) %>%
  #Complete the data for missing rows.
  complete(row = 1:nrow(df))

#    row first last
#  <int> <dbl> <dbl>
#1     1     1     9
#2     2     8     8
#3     3     3     3
#4     4    NA    NA
#5     5     9     9
库(dplyr)
图书馆(tidyr)
df%>%
#创建一个行号
变异(行=行编号())%>%
#获取长格式的数据
枢轴长度(cols=-行)%>%
#将数据分为两列
单独的(名称,c('name1','name2'),sep='.''''''''>%
#按每行和t1、t2列分组
分组人(行,名称2)%>%
#删除具有所有'NA'值的组
过滤器(所有(!is.na(值)))%>%
#对于每一行,获取“a”列的第一个和最后一个值
分组依据(行)%>%
总结(第一个=第一个(值[name1=='a']),
last=last(值[name1=='a'])%>%
#完成缺少行的数据。
完成(行=1:nrow(df))
#排第一排最后一排
#    
#1     1     1     9
#2     2     8     8
#3     3     3     3
#4娜娜
#5     5     9     9

能否显示给定数据的预期输出?已添加预期输出!您能否显示给定数据的预期输出?已添加预期输出!Thanx是伟大的解决方案。我有一个事后的想法:是否也可以得到所使用的值的位置。在这种情况下,如果它位于“a”(或列名称)的第一、第二或第三列。是的,这是可能的,但也许你应该作为一个新问题来问它。Thanx是一个很好的解决方案。我有一个事后的想法:是否也可以得到所使用的值的位置。在本例中,如果它位于“a”的第一列、第二列或第三列(或该列的名称)。是的,这是可能的,但也许你应该把它作为一个新问题来问。