我有一个大型的data.frame字符数据,我想根据其他语言中通常称为字典的内容进行转换.
目前我正在这样做:
foo <- data.frame(snp1 = c("AA", "AG", "AA", "AA"), snp2 = c("AA", "AT", "AG", "AA"), snp3 = c(NA, "GG", "GG", "GC"), stringsAsFactors=FALSE)
foo <- replace(foo, foo == "AA", "0101")
foo <- replace(foo, foo == "AC", "0102")
foo <- replace(foo, foo == "AG", "0103")
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是replace每次我想要替换data.frame中的一个项目时,重复该语句显然不是很漂亮并且看起来很愚蠢.
有没有更好的方法来实现这一点,因为我有一个大约25个键/值对的字典?
我想基于另一列中的4个值创建一个新列.
if col1=1 then col2= G;
if col1=2 then col2=H;
if col1=3 then col2=J;
if col1=4 then col2=K.
Run Code Online (Sandbox Code Playgroud)
我怎么做R?我需要有人帮忙解决这个问题.我试过if/else和ifelse,但似乎没有工作.谢谢
我一直试图弄清楚这一天,但无济于事.我有一个if语句,旨在满足四个可能的条件.
A,B,C是数据帧.
这是我的代码:
if (!exists("A") & exists("B")) {
C= B}
else if (exists("A") & !exists("B")) {
C= A}
else if (exists("A") & exists("B")) {
C= rbind(B,A)}
else {C <- NULL}
Run Code Online (Sandbox Code Playgroud)
我一直在意外的"}"和意外的"其他"上收到错误.我已经遵循了几个例子,但仍面临着这一挑战.任何指针都将非常感激.谢谢.
我已经将文件中的数据导入到R中的数据框中.就像这样.
Name Count Category
A 100 Cat1
C 10 Cat2
D 40 Cat1
E 30 Cat3
H 3 Cat3
Z 20 Cat2
M 50 Cat10
Run Code Online (Sandbox Code Playgroud)
所以现在我想添加Category列,具体取决于Name列中的值.如果Name =(A,D),Category ='Cat1'等等.
这只是我给出的一个简单例子.我有大量的名称和类别,所以我想要一个紧凑的语法.我怎样才能做到这一点?
编辑:我已经更改了示例以更好地满足我的需求,因为名称可以是任何数字.很抱歉以前不太清楚.
请考虑以下代码:
library(dplyr)
x <- case_when(
FALSE ~ list('a' = 'b'),
TRUE ~ list('c' = 'd')
)
Run Code Online (Sandbox Code Playgroud)
x是
1 $ NA 列表:chr "d"
我希望 x 中的元素 d 具有名称“c”而不是 NA。我错过了什么吗?这是一个错误吗?我怎样才能实现我的预期行为?
准确地说,我希望上面的语句与
x <- list('c' = 'd')
Run Code Online (Sandbox Code Playgroud) 我有Excel表格中的数据,我需要一种方法来清理它.我想删除不一致的值,如分支名称被指定为(计算机科学与工程,CSE,CS,计算机科学).那么我怎样才能将它们全部带入单一符号?