Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.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_Dataframe - Fatal编程技术网

R 基于两列中的值组合的列

R 基于两列中的值组合的列,r,dataframe,R,Dataframe,我有一个dataframe,我想在其中基于另外两列的值创建一个新列。虚拟数据帧 freqg <- data.frame(mat=c(1,2),flank=c(1,2,3,4)) fregg您可能更喜欢与dplyr等效的版本 freqg %>% mutate(condition = case_when( mat %in% 1 & flank %in% 1 ~ "LK", mat %in% 1 & flank %in% 2 ~ "FQ")) 您可能

我有一个dataframe,我想在其中基于另外两列的值创建一个新列。虚拟数据帧

freqg <- data.frame(mat=c(1,2),flank=c(1,2,3,4))

fregg您可能更喜欢与dplyr等效的版本

freqg %>%
  mutate(condition = case_when(
    mat %in% 1 & flank %in% 1 ~ "LK",
    mat %in% 1 & flank %in% 2 ~ "FQ"))

您可能更喜欢与dplyr等效的版本

freqg %>%
  mutate(condition = case_when(
    mat %in% 1 & flank %in% 1 ~ "LK",
    mat %in% 1 & flank %in% 2 ~ "FQ"))
在原始数据帧上创建组合条件数据帧(
comb_df
)和
left_join
,使用dplyr或
merge
从基本R开始

使用
expand.grid
创建所需的组合。比如:

comb_df <- data.frame(expand.grid(mat = 1:2, flank = 1:2), 
                      condition = c("LK", NA, "FQ", NA)

comb_df
#  mat flank condition
#1   1     1        LK
#2   2     1      <NA>
#3   1     2        FQ
#4   2     2      <NA>

freqg %>% dplyr::left_join(comb_df)            # OR merge(freqg, comb_df, all.x= T)
#  mat flank condition
#1   1     1        LK
#2   2     2      <NA>
#3   1     3      <NA>
#4   2     4      <NA>
comb_-df%dplyr::left_-join(comb_-df)#或merge(fregg,comb_-df,all.x=T)
#垫面条件
#1LK
#2   2     2      
#3   1     3      
#4   2     4      
使用dplyr或
从基R合并
在原始数据帧上创建一个组合条件数据帧(
comb_df
)和
左连接

使用
expand.grid
创建所需的组合。比如:

comb_df <- data.frame(expand.grid(mat = 1:2, flank = 1:2), 
                      condition = c("LK", NA, "FQ", NA)

comb_df
#  mat flank condition
#1   1     1        LK
#2   2     1      <NA>
#3   1     2        FQ
#4   2     2      <NA>

freqg %>% dplyr::left_join(comb_df)            # OR merge(freqg, comb_df, all.x= T)
#  mat flank condition
#1   1     1        LK
#2   2     2      <NA>
#3   1     3      <NA>
#4   2     4      <NA>
comb_-df%dplyr::left_-join(comb_-df)#或merge(fregg,comb_-df,all.x=T)
#垫面条件
#1LK
#2   2     2      
#3   1     3      
#4   2     4      

您可以对所有组合使用
expand.grid
,然后创建另一列,我称之为
cc
,然后使用
merge
将此数据帧与我称之为
cond\u df

> freqg=expand.grid(mat=c(1,2),flank=c(1,2,3,4))
> freqg
  mat flank
1   1     1
2   2     1
3   1     2
4   2     2
5   1     3
6   2     3
7   1     4
8   2     4
> cond_df=data.frame(cc=c(11,12),condition=c("LK","FQ"))
> cond_df
  cc condition
1 11        LK
2 12        FQ
> merge(cbind(freqg,cc=do.call(paste0,freqg)),cond_df,all=T)
  cc mat flank condition
1 11   1     1        LK
2 12   1     2        FQ
3 13   1     3      <NA>
4 14   1     4      <NA>
5 21   2     1      <NA>
6 22   2     2      <NA>
7 23   2     3      <NA>
8 24   2     4      <NA>
fregg=expand.grid(mat=c(1,2),侧翼=c(1,2,3,4)) >频率 垫翼 1 1 1 2 2 1 3 1 2 4 2 2 5 1 3 6 2 3 7 1 4 8 2 4 >cond_df=data.frame(cc=c(11,12),condition=c(“LK”,“FQ”)) >cond_df cc条件 111LK 2 12 FQ >合并(cbind(freqg,cc=do.call(paste0,freqg)),cond_df,all=T) cc垫侧面条件 1111LK 2 12 1 2 FQ 3 13 1 3 4 14 1 4 5 21 2 1 6 22 2 2 7 23 2 3 8 24 2 4
您可以对所有组合使用
expand.grid
,然后创建另一列,我称之为
cc
,然后使用
merge
将此数据帧与我称之为
cond\u df

> freqg=expand.grid(mat=c(1,2),flank=c(1,2,3,4))
> freqg
  mat flank
1   1     1
2   2     1
3   1     2
4   2     2
5   1     3
6   2     3
7   1     4
8   2     4
> cond_df=data.frame(cc=c(11,12),condition=c("LK","FQ"))
> cond_df
  cc condition
1 11        LK
2 12        FQ
> merge(cbind(freqg,cc=do.call(paste0,freqg)),cond_df,all=T)
  cc mat flank condition
1 11   1     1        LK
2 12   1     2        FQ
3 13   1     3      <NA>
4 14   1     4      <NA>
5 21   2     1      <NA>
6 22   2     2      <NA>
7 23   2     3      <NA>
8 24   2     4      <NA>
fregg=expand.grid(mat=c(1,2),侧翼=c(1,2,3,4)) >频率 垫翼 1 1 1 2 2 1 3 1 2 4 2 2 5 1 3 6 2 3 7 1 4 8 2 4 >cond_df=data.frame(cc=c(11,12),condition=c(“LK”,“FQ”)) >cond_df cc条件 111LK 2 12 FQ >合并(cbind(freqg,cc=do.call(paste0,freqg)),cond_df,all=T) cc垫侧面条件 1111LK 2 12 1 2 FQ 3 13 1 3 4 14 1 4 5 21 2 1 6 22 2 2 7 23 2 3 8 24 2 4