我在数据框的列中有一个数据,
ROMANIA ~ ROMANIA ~ ROMANIA ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0
SWITZERLAND ~ RUSSIAN FEDERATION ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0
INDIA ~ 0 ~ 0~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0
以及更多行。
我想在第一次出现零后删除数据。所以最终输出看起来像
ROMANIA ~ ROMANIA ~ ROMANIA
SWITZERLAND ~ RUSSIAN FEDERATION
INDIA
答案 0 :(得分:1)
使用gsub
将" ~ 0"
(包括" ~ 0 "
)第一次出现后的所有内容替换为""
(=无)
v <- c("ROMANIA ~ ROMANIA ~ ROMANIA ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0",
"SWITZERLAND ~ RUSSIAN FEDERATION ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0",
"INDIA ~ 0 ~ 0~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0" )
gsub(" ~ 0.*", "", v)
#[1] "ROMANIA ~ ROMANIA ~ ROMANIA" "SWITZERLAND ~ RUSSIAN FEDERATION" "INDIA"
答案 1 :(得分:1)
数据:
library(magrittr)
df <- data.table::fread("
ROMANIA ~ ROMANIA ~ ROMANIA ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0
SWITZERLAND ~ RUSSIAN FEDERATION ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0
INDIA ~ 0 ~ 0~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0 ~ 0",header=F,sep="~") %>% as.data.frame
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
# 1 ROMANIA ROMANIA ROMANIA 0 0 0 0 0 0 0
# 2 SWITZERLAND RUSSIAN FEDERATION 0 0 0 0 0 0 0 0
# 3 INDIA 0 0 0 0 0 0 0 0 0
代码:
df[,sapply(df,function(x)as.numeric(x) %>% {sum(.==0,na.rm=T) != length(x)})]
结果:
# V1 V2 V3
#1 ROMANIA ROMANIA ROMANIA
#2 SWITZERLAND RUSSIAN FEDERATION 0
#3 INDIA 0 0
答案 2 :(得分:0)
由于您没有正确提供示例数据,因此我无法完全对其进行测试,请尝试执行以下操作。
{{1}}