我有一个data.frames列表,如下所示:
@echo off
setlocal disableDelayedExpansion
pushd "C:\Documents and Settings\John\Desktop\New\Interest\f2"
for /f "tokens=1,3 delims=:*?\/<>|" %%A in (
'findstr /n "^" "*.txt" ^| findstr "^[^:]*:26:.......................[^:*?\\/<>|]"'
) do (
set "old=%%A"
set "line=%%B"
setlocal enableDelayedExpansion
ECHO ren "!old!" "!line:~23,11! - !old!"
endlocal
)
popd
我想要做的是:如果在“Val”列中,在“Replicate”列中有一个与R4相关的重复元素,它们都将从“Val”列中删除。
例如,在名为 $`42`
Val Replicate Index
26.92 R2 42
26.92 R3 42
28.68 R1 42
28.68 R4 42
$`43`
Val Replicate Index
28.92 R3 43
29.28 R2 43
30.11 R1 43
30.11 R4 43
$`44`
Val Replicate Index
24.67 R3 44
24.70 R2 44
25.70 R1 44
25.70 R4 44
$`45`
Val Replicate Index
30.57 R1 45
30.57 R4 45
32.39 R2 45
32.81 R3 45
的data.frame中,由于30.57(R1)等于30.57(R4),它们都将被删除,仅保留32.39(R2)和32.81(R3)。因此,data.frame 45
的所需输出将为:
45
我试图使用:
$`45`
Val Replicate Index
32.39 R2 45
32.81 R3 45
但不幸的是,它删除了“Val”列中的所有重复元素,而不是与“Replicate”列中的R4进行比较。
答案 0 :(得分:2)
如果这仅与&#34; R4&#34;值,然后
df[!((duplicated(df$Val) | duplicated(df$Val, fromLast=TRUE)) &
df$Val[df$Replicate == "R4"]), ]
对于某些data.frame df,将保留非重复观测值以及所有非R4观测值。然后,将其放入lapply
mynonDupeList <- lapply(myList,
function(i) i[!((duplicated(df$Val) | duplicated(i$Val, fromLast=TRUE))
& i$Val[i$Replicate == "R4"]), ]))
应该这样做。