![如何在 R 或 Excel 中检查特定列的行是否具有相同的符号?](https://linux22.com/image/1500897/%E5%A6%82%E4%BD%95%E5%9C%A8%20R%20%E6%88%96%20Excel%20%E4%B8%AD%E6%A3%80%E6%9F%A5%E7%89%B9%E5%AE%9A%E5%88%97%E7%9A%84%E8%A1%8C%E6%98%AF%E5%90%A6%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%E7%AC%A6%E5%8F%B7%EF%BC%9F.png)
我的电子表格有很多列。以“FC”开头的列应该包含具有相同符号的所有行。
但在下表中,您可以看到第一行“NM_000319”的列“FC_AT1BPABaP1vsAT1NT1”和“FC_AT1BPABaP3vsAT1NT3”的符号为负,而列“FC_AT1BPABaP2vsAT1NT2”的符号为正。
那么,我该如何检查这三列的符号是否相同呢?
tracking_id FC_AT1BPABaP1vsAT1NT1 FC_AT1BPABaP2vsAT1NT2 FC_AT1BPABaP3vsAT1NT3
NM_000319 -7514.342949 1.821240463 -2.721908575
NM_000403 2.831020725 -3.756945063 -251342.1488
NM_001001560 -21.5329816 4.230898855 4.404446706
NM_001003818 -738637764.9 1.707630437 1526.524518
NM_001005290 -7.291187382 1.837827141 -1.993878903
NM_001009554 -4.321191835 698.4121619 2.260286104
NM_001009570 6.728377618 346.5860049 -1.877202148
NM_001014837 -1.950676412 4.527666097 1727.863947
NM_001018011 12.96256834 -21.85994794 10.07627791
NM_001020818 5.918729877 43107941834 -5.208946431
NM_001031848 3.223480013 -3.245050492 -104.259285
NM_001033578 -9.58E+13 -34519832402 1.614184522
NM_001037126 1.655300434 2481.777403 -2.389413271
NM_001039457 3.631318663 1.706726068 6327.407683
答案1
例如,您可以在 Excel 中使用以下公式:
=AND(SIGN(B2)=SIGN(C2),SIGN(C2)=SIGN(D2))
它只是做您需要的事情,检查所有三个数字是否具有相同的符号。
答案2
在 R 中你可以这样做:
samesign <- function(x) {abs(sum(sign(x)))==length(x)}
apply(mydf,1,samesign)
根据您的数据(我读到的readindf
),得出以下结论:
apply(readindf[,2:4],1,samesign)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE