![](/img/trans.png)
[英]How to condense a data frame into two columns based of a specific column entry
[英]Swap two entry in a column based on the length in a data frame
我有一個數據框df
其中說a
和b
列,如果值的長度大於3,我想在列之間交換值
輸入:
a b
1 23
2 44
3 43324
4 76
預期產量:
a b
1 23
2 44
43324 3
4 76
我在想類似下面的東西:
df <- transform(df, df$a = ifelse(length(df$b) > 3, a, b), df$a = ifelse(length(df$b) > 3, b, a))
但這沒有用,我知道我必須使用類似df[length(df$a)]
但我無法弄清楚。
PS:對於那些好奇的人,輸入基本上是一個呼叫報告,有時在輸入數據時,他們會交換單元號(10位數字)和ID號(4位數字)。
這是一個班輪
df[nchar(df$b)>3, c("a", "b")] <- df[nchar(df$b)>3, c("b", "a")]
> df
# a b
#1 1 23
#2 2 44
#3 43324 3
#4 4 76
也許您可以構建一個適用於您的示例的自定義函數:
swap <- function(df) {
a <- ifelse(nchar(df$b) > 3, df$b, df$a)
b <- ifelse(nchar(df$b) > 3, df$a, df$b)
df$a <- a
df$b <- b
return(df)
}
#Let's test it
swap(df)
# a b
#1 1 23
#2 2 44
#3 43324 3
#4 4 76
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.