代码之家  ›  专栏  ›  技术社区  ›  SNT

将第二行作为r dataframe中的特定列值进行操作[关闭]

r
  •  -2
  • SNT  · 技术社区  · 7 年前

    我有一个数据帧,列的每两行 X1 (哪个地址)应该转到列 x3 在前一行。下面是Actaul数据帧结构。我如何在 r .

    structure(list(X1 = c("(512) Brewing Company", "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "0 Mile Brewing Company", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "10 Barrel Brewing", "1501 E StSan Diego, California, 92101United States"
    ), X2 = c("(512) Brewing Company", "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "0 Mile Brewing Company", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "10 Barrel Brewing", "1501 E StSan Diego, California, 92101United States"
    ), X3 = c("-", "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "-", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "-", "1501 E StSan Diego, California, 92101United States"), X4 = c("-", 
    "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "-", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "-", "1501 E StSan Diego, California, 92101United States"), X5 = c("3.84", 
    "Brewery, Bar", "-", "Brewery", "-", "Brewery, Bar, Eatery"), 
        X6 = c("37", "Brewery, Bar", "4", "Brewery", "0", "Brewery, Bar, Eatery"
        )), row.names = 4:9, class = "data.frame")
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Shree    7 年前

    假设您总是有偶数行-

    df <- structure(list(X1 = c("(512) Brewing Company", "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "0 Mile Brewing Company", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "10 Barrel Brewing", "1501 E StSan Diego, California, 92101United States"
    ), X2 = c("(512) Brewing Company", "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "0 Mile Brewing Company", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "10 Barrel Brewing", "1501 E StSan Diego, California, 92101United States"
    ), X3 = c("-", "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "-", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "-", "1501 E StSan Diego, California, 92101United States"), X4 = c("-", 
    "407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545", 
    "-", "11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133", 
    "-", "1501 E StSan Diego, California, 92101United States"), X5 = c("3.84", 
    "Brewery, Bar", "-", "Brewery", "-", "Brewery, Bar, Eatery"), 
        X6 = c("37", "Brewery, Bar", "4", "Brewery", "0", "Brewery, Bar, Eatery"
        )), row.names = 4:9, class = "data.frame")
    
    df$X3 <- NA_character_
    
    df$X3[seq(1, nrow(df), by = 2)] <- df$X1[seq(2, nrow(df), by = 2)]
    

    另一种通用方法(不考虑行数)使用 dplyr 包装-

    library(dplyr)
    df$X3 <- lead(df$X1, 1)
    df$X3[seq(2, nrow(df), by = 2)] <- NA_character_