R-以df填充列

时间:2016-07-02 13:56:59

标签: r fill col

在此数据框中:

           a        b   c d e  f g
1         <NA>     <NA> H W Ja C S
2         <NA>     <NA> H W Ja C S
3          S        Sm  H W Ja C S
4          Ja       K   H W Ja C S
5         <NA>     <NA> H W Ja C S
6         <NA>     <NA> H W Ja C S
7         <NA>     <NA> H W Ja C S
8          H        M   H W Ja C S
9          C        Ja  H W Ja C S
10        <NA>     <NA> H W Ja C S
11        <NA>     <NA> H W Ja C S
12        <NA>     <NA> H W Ja C S
13        <NA>     <NA> H W Ja C S
14         W        H   H W Ja C S
15         K        J   H W Ja C S
16        <NA>     <NA> H W Ja C S
17        <NA>     <NA> H W Ja C S
18        <NA>     <NA> H W Ja C S

在每一行中,我想替换列c中的值:g将列a中的值与列b中的值匹配。在每次替换之后,我想要填充列中的值,直到有另一个替换。 听起来可能很复杂,但最后应该看起来像这样。

           a           b   c d e  f  g
1         <NA>        <NA> H W Ja C  S
2         <NA>        <NA> H W Ja C  S
3          S           Sm  H W Ja C  Sm
4          Ja          K   H W K  C  Sm
5         <NA>        <NA> H W K  C  Sm
6         <NA>        <NA> H W K  C  Sm
7         <NA>        <NA> H W K  C  Sm
8          H           M   M W K  C  Sm
9          C           Ja  M W K  Ja Sm
10        <NA>        <NA> M W K  Ja Sm
11        <NA>        <NA> M W K  Ja Sm
12        <NA>        <NA> M W K  Ja Sm
13        <NA>        <NA> M W K  Ja Sm
14         W           H   M H K  Ja Sm
15         K           J   M H J  Ja Sm
16        <NA>        <NA> M H J  Ja Sm
17        <NA>        <NA> M H J  Ja Sm
18        <NA>        <NA> M H J  Ja Sm

数据

structure(list(a = c(NA, NA, "S", "Ja", NA, NA, NA, "H", "C", NA, NA, NA, NA, "W", "K", NA, NA, NA),
               b = c(NA, NA, "Sm", "K", NA, NA, NA, "M", "Ja", NA, NA, NA, NA, "H", "J", NA, NA, NA), 
               c = c("H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H"),
               d = c("W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W"),
               e = c("Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja", "Ja"),
               f = c("C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C"),
               g = c("S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S")),
          .Names = c("a", "b", "c", "d", "e", "f", "g"), class = "data.frame",
          row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"))

1 个答案:

答案 0 :(得分:0)

您可以使用public class LinkerPleaseInclude { public void Include(XmlReflectionImporter importer) { importer.DoSomething(); } } 循环执行此操作:

for

这假设了一些事情:

  • 所有x <- df[1,c('c','d','e','f','g')] for (i in seq(nrow(df))) { x[x==df[i,'a']] <- df[i,'b'] df[i,c('c','d','e','f','g')] <- x } df ## a b c d e f g ## 1 <NA> <NA> H W Ja C S ## 2 <NA> <NA> H W Ja C S ## 3 S Sm H W Ja C Sm ## 4 Ja K H W K C Sm ## 5 <NA> <NA> H W K C Sm ## 6 <NA> <NA> H W K C Sm ## 7 <NA> <NA> H W K C Sm ## 8 H M M W K C Sm ## 9 C Ja M W K Ja Sm ## 10 <NA> <NA> M W K Ja Sm ## 11 <NA> <NA> M W K Ja Sm ## 12 <NA> <NA> M W K Ja Sm ## 13 <NA> <NA> M W K Ja Sm ## 14 W H M H K Ja Sm ## 15 K J M H J Ja Sm ## 16 <NA> <NA> M H J Ja Sm ## 17 <NA> <NA> M H J Ja Sm ## 18 <NA> <NA> M H J Ja Sm 列都是字符(非因子)
  • 每行的初始值与第一行相同。