有条件地连接字符串
Conditionally Concatenate String
我有一个包含这 5 列的数据框
val1 val2 val3 val4 val5
1 0 3 0 5
0 0 0 0 5
1 2 0 0 0
等等
我试图用条件连接创建一个新列(结果不能连接零)
val6
1,3,5
5
1,2
等等
有什么想法吗?
我认为这是重复的。但是,找不到这样回答的人。
我们可以按行使用 apply
并删除值为 0 的元素并粘贴以逗号分隔的剩余值。
df$val6 <- apply(df, 1, function(x) paste0(x[x!=0], collapse = ","))
df
# val1 val2 val3 val4 val5 val6
#1 1 0 3 0 5 1,3,5
#2 0 0 0 0 5 5
#3 1 2 0 0 0 1,2
另一个选项可以使用 by
df$val6 <- by(df, 1:nrow(df), function(x) paste0(x[x!=0], collapse = ","))
我们可以尝试 replace
和 gsub
gsub("NA\s*|\s*NA|NA+", "", do.call(paste,replace(df1, df1==0, NA)))
#[1] "1 3 5" "5" "1 2"
我有一个包含这 5 列的数据框
val1 val2 val3 val4 val5
1 0 3 0 5
0 0 0 0 5
1 2 0 0 0
等等
我试图用条件连接创建一个新列(结果不能连接零)
val6
1,3,5
5
1,2
等等
有什么想法吗?
我认为这是重复的。但是,找不到这样回答的人。
我们可以按行使用 apply
并删除值为 0 的元素并粘贴以逗号分隔的剩余值。
df$val6 <- apply(df, 1, function(x) paste0(x[x!=0], collapse = ","))
df
# val1 val2 val3 val4 val5 val6
#1 1 0 3 0 5 1,3,5
#2 0 0 0 0 5 5
#3 1 2 0 0 0 1,2
另一个选项可以使用 by
df$val6 <- by(df, 1:nrow(df), function(x) paste0(x[x!=0], collapse = ","))
我们可以尝试 replace
和 gsub
gsub("NA\s*|\s*NA|NA+", "", do.call(paste,replace(df1, df1==0, NA)))
#[1] "1 3 5" "5" "1 2"