我有两个数据框- DF1
和DF2
DF1
RS1 R_Al1 B
rs_12 A -0.1
rs_23 T 0.2
rs_34 C 0.3
DF2
RS2 RefAl2 B
rs_12 C 0.5
rs_23 G -0.3
rs_23 T 0.2
rs_34 C -0.1
rs_23 G -0.1
rs_34 C 0.7
rs_34 A 0.9
Run Code Online (Sandbox Code Playgroud)
我需要获得Columns RS1
和的相同顺序RS2
。如果两个数据帧之间的列长不同,该怎么办。
更新
预期的输出将是DF2$RS2
这样的DF1$RS1
:
DF2$RS2
RS2
rs_12
rs_23
rs_23
rs_23
rs_34
rs_34
rs_34
Run Code Online (Sandbox Code Playgroud) 我有一个DF
.它的一个列看起来像
DF$A
A
a
a
a
b
b
b
c
c
Run Code Online (Sandbox Code Playgroud)
我试图替换此列中的所有重复字符NA
.天真的,我试过了
DF$A <- DFl[duplicated(DF$A),] <- NA
Run Code Online (Sandbox Code Playgroud)
但它只是将整个DF转换为NA
值.谢谢你的任何建议.
我DF
只有一个专栏:DF$A
。这是我需要以特定方式重新排列名称的因素:
l
pheno
l.ldl.a
m.ldl.b
s.ldl.c
x.vldl.b
l.vldl.c
m.vldl.d
s.vldl.f
xs.vldl.h
xxl.vldl.a
xl.hdl.a
l.hdl.b
m.hdl.c
s.hdl.d
Run Code Online (Sandbox Code Playgroud)
我尝试根据两个column 2
顺序重新创建DF$A
reorderLevels <- c(XXL.VLDL,XL.VLDL,L.VLDL,M.VLDL,S.VLDL,XS.VLDL,
IDL,L.LDL,M.LDL,S.LDL,XL.HDL,L.HDL,M.HDL,S.HDL)
Run Code Online (Sandbox Code Playgroud)
无需关心名称的最后一部分。
我知道如何根据名称的第一部分(第一个点之前)或根据名称的第二部分(点之间的部分)重新排序,但是我不知道如何根据名称的两个部分进行排序。
到目前为止,我可以使用以下命令对其重新排序,但仅根据名称的一部分
l1 <- l %>% mutate(m2 = match(sapply(strsplit(l$pheno, "[.]"),
function(x) x[1]), reorderLevels)) %>%
arrange(m2) %>%
select(-m2)
Run Code Online (Sandbox Code Playgroud)