У меня есть эти данные, где каждая ячейка состоит из символов ,
x1 <- c(100, 0, 120)
x2 <- c(0, 0, 0)
x3 <- c(110, 0, 0)
data<- data.frame(x1, x2, x3)
testdata <- lapply(data, as.character)
testdata
$`x1`
[1] "100" "0" "120"
$x2
[1] "0" "0" "0"
$x3
[1] "110" "0" "0"
Я хочу заменить строковые записи только для 0 на 000. Это означает, что мои данные должны выглядеть следующим образом:
> str(testdata)
List of 3
$ x1: chr [1:3] "100" "000" "120"
$ x2: chr [1:3] "000" "000" "000"
$ x3: chr [1:3] "110" "000" "000"
После это , я могу написать это,
testdata2 <- data.frame(lapply(testdata, function(x) {gsub("0", "000", x)}))
Или это,
testdata %>% mutate_all(funs(str_replace_all(., "0", "000")))
В обоих случаях он заменяет ALL 0s на 000. И результирующие данные выглядят так:
> testdata
x1 x2 x3
1 1000000 000 11000
2 000 000 000
3 12000 000 000
это не то, что я ищу. Есть идеи, как решить эту проблему?