小编Mar*_*abi的帖子

从 R 中的另一列分配新值

我想在 R 中创建一个包含来自另一列的值的新列,但我需要重新分配它们。这是一个示例:数据如下所示:

ID column1  column2 
1  C*0421   C*0232
2  C*0531   C*0332
3  C*0502   C*0544
4  C*0432   C*0132
5  C*0632   C*0703
Run Code Online (Sandbox Code Playgroud)

所以我想要的是创建一个新列,它应该分配任何开头的内容:

C*04 should be C1
C*05 should be C2
C*07 should be C1
C*02 should be C2 
NA   should be NA
Run Code Online (Sandbox Code Playgroud)

最终结果应如下所示:

ID column1  column2   results_from_column1  results_from_column2     Combining_the_results
1  C*0421   C*0232     C1                        C2                       C1/C2
2  C*0531   C*0332     C2                        C1                       C2/C1
3  C*0502   C*0544     C2                        C2                       C2/C2  
4  C*0432   C*0132     C1                        C1                       C1/C1
5  C*0632   C*0703     C2                        C1                       C2/C1
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码,但它给我错误地分配了某些值,我不知道为什么 …

r dplyr

3
推荐指数
1
解决办法
61
查看次数

在 R 中合并数据框的每三列

我的数据框包含大约 900 列,我想将每 3 列的内容合并到一列中,我尝试做一个循环,但我不擅长,你能帮我吗?
数据框如下所示:

df_out <- data.frame(
  "name" = c("1", "2", "3", "4", "5", "6", "7", "8"),
  "col1"=rep("B",times= 8),
  "col2"=rep("A",times= 8),
  "col3"=rep("G",times= 8),
  "col4"=rep("C",times= 8),
  "col5"=rep("C",times=8),
  "col6"=rep("B",times= 8),
  "col7"=rep("A",times= 8),
  "col8"=rep("G",times= 8),
  "col9"=rep("C",times= 8),
  "col10"=rep("C",times=8),
  "col11"=rep("B",times= 8),
  "col12"=rep("A",times= 8),
  "col13"=rep("G",times= 8),
  "col14"=rep("C",times= 8),
  "col15"=rep("C",times=8)  
)

df_out
Run Code Online (Sandbox Code Playgroud)

所以最终的结果应该是这样的:

df_out2 <- data.frame(
  "name" = c("1", "2", "3", "4", "5", "6", "7", "8"),
  "col1"=rep("BAG",times= 8),
  "col2"=rep("CCB",times= 8),
  "col3"=rep("AGC",times= 8),
  "col4"=rep("CBA",times= 8),
  "col5"=rep("GCC",times=8))

df_out2
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。另外,您能推荐一些学习 R 循环的书籍或好的网站吗?谢谢

r

3
推荐指数
1
解决办法
301
查看次数

标签 统计

r ×2

dplyr ×1